当前位置: 首页 > 知识库问答 >
问题:

Primefaces fileDownload非英文文件名损坏

呼延才
2023-03-14
public FileDownloadController() {          
    InputStream stream = ((ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext()).getResourceAsStream("/images/optimusprime.jpg");  
    file = new DefaultStreamedContent(stream, "image/jpg", "downloaded_optimus.jpg");  
}

有什么想法可以解决我的问题吗?

谢谢,提前。

共有1个答案

弘康安
2023-03-14

这个问题在即将发布的PrimeFaces6.2中得到了修正,但是对于早期版本,需要应用下面的修正。在评论下面的一个链接中,提到了一个PrimeFaces问题,其中包含以下修复对Chrome、IE和Opera有效,但对FireFox无效的信息(没有提到版本,也没有提到“Edge”)

变通办法

尝试将文件名编码为application/x-www-form-urlencodedMIME格式(URLEncoder)。

public StreamedContent getFileDown () {
        // Get current position in file table
        this.currentPosition();
        attachments = getAttachments();
        Attachment a = getAttachmentByPosition( pos, attachments );

        FileNameMap fileNameMap = URLConnection.getFileNameMap();
        // Detecting MIME type
        String mimeType = fileNameMap.getContentTypeFor(a.getAttachmentName());
        String escapedFilename = "Unrecognized!!!";
        try {
            // Encoding
            escapedFilename = URLEncoder.encode(a.getAttachmentName(), "UTF-8").replaceAll(
                    "\\+", "%20");
        } catch (UnsupportedEncodingException e1) {         
            e1.printStackTrace();
        }
        // Preparing streamed content
        fileDown = new DefaultStreamedContent( new ByteArrayInputStream( a.getAttachment() ),
                mimeType, escapedFilename);
        return fileDown;
    }
 类似资料:
  • 问题内容: 我有一个包含几个文件的目录,其中许多文件具有非英语名称。我在Windows 7中使用PHP。 我想使用PHP列出文件名及其内容。 目前,我正在使用和。这适用于英文文件名,但不适用于非英文(中文)文件名。 例如,我的文件名如“ए로औरप्रोब्लेम。eml”,“ hello鶨鹙鵨鶣鎹蓥.eml”。 无法使用获取文件名 即使我在其参数中硬编码文件名,也无法打开。 我该怎么做? 问题答案

  • 我试图使用os.walk()获取文件夹中的所有文件,我使用的代码是: 我正试图通过打印根目录和文件名(如下所示)来消除这个问题,但偶尔会有一个损坏的“文件名”,比如“File4 name.rtf”。我有与“~$le4 name.rtf”相同的文件的另一个版本。问题是在这一步之后,我正在读取所有文件以提取文本,但在读取这些文件时,在名称旁边带有“~$”的文件时出现了一个错误。 下面,我尝试介绍所有不

  • 问题内容: 我使用Eclipse在Windows 7中创建了一个jar文件。当我尝试打开jar文件时,它说jar文件无效或损坏。谁能建议我为什么jar文件无效? 问题答案: 当您在Windows资源管理器中双击一个JAR文件时,会发生这种情况,但是JAR本身实际上不是 可执行的 JAR。真正的可执行JAR至少应具有带有方法的类,并在中引用它。 在Eclispe中,您需要将项目导出为 Runnabl

  • 问题内容: 我编写Python脚本来复制文件;不幸的是,由于文件名太长(> 256),它一直失败。反正有解决这个问题的办法吗? 我正在使用Python 2.5.4和Windows XP。 干杯, 问题答案: 使用以字符串开头的路径。

  • 问题内容: 我在这篇文章中找到了这个ZipUtils类: 如何使用java压缩文件夹本身 我对其进行了修改,以便可以传递一个zip文件名。但是,它的唯一工作方式是使用硬编码的静态字符串。从数据库中获取zippedFile字符串。我已经将dbZippedFile和hardcodedZippedFile进行了比较,它们都是相同的……也许在FileOutputStream中使用非静态字符串会产生问题吗?

  • 我正在使用apache poi,我创建了一个HSSF工作簿,并尝试打开一个xlsx文件。但当我用excel打开时,它显示文件已损坏。这是我的密码。