Java Wicket 1.5.6 : File name on download is url encoded, 将空格转换为加号

标签 java wicket-1.5

我们有一个使用 Wicket 编写的下载文件链接,尽管我们尽了最大努力,但我们无法获取它,因此可以使用空格下载该文件...文件名始终进行编码,以便将空格转换为加“+” ' 标志。

示例: “My File.xls”在下载到“My+File.xls”时会被转换

请参阅下面我们正在使用的代码。我们在这里尝试了多种选择,但问题仍然存在。希望有人帮助我们缩小搜索范围,找出问题所在。

此外,resourceStream.downloadLink.prepareFileName() 在此处返回“My File.xls”,但不包括引号。我们尝试用引号括住文件名,但这似乎不起作用。

 public DownloadLinkListActionCell(String componentId, IModel<DownloadLink> rowModel) {
    super(componentId, rowModel);

    downloadLink = rowModel.getObject();

    IModel fileModel = new AbstractReadOnlyModel(){
        public Object getObject() {
            return generateFile();
        }
    };

    Link downloadFileLink = new Link("download") {
        @Override
        public void onClick() {
            File downloadFile = (File) fileModel.getObject();
            IResourceStream resourceStream = new FileResourceStream(
                    new org.apache.wicket.util.file.File(downloadFile));
            getRequestCycle().scheduleRequestHandlerAfterCurrent(
                new ResourceStreamRequestHandler(resourceStream,downloadLink.prepareFileName())
                {
                    @Override
                    public void respond(IRequestCycle requestCycle)
                    {
                        super.respond(requestCycle);
                    }
                }.setContentDisposition(ContentDisposition.ATTACHMENT)
                            .setCacheDuration(Duration.NONE)
            );
            setResponsePage(DownloadLinkPage.class, PageParametersBuilder.uniqueId(downloadLink.getId()));
        }
    };

}

最佳答案

根据When to encode space to plus (+) or %20?您需要调整

that + means a space only in application/x-www-form-urlencoded content

您需要调整 header 中的编码。

关于Java Wicket 1.5.6 : File name on download is url encoded, 将空格转换为加号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56464895/

相关文章:

java - matches() 匹配Java中必须以大写字母开头的单词

java - Java从服务器发送文件到客户端

java - 我可以为嵌入式设备进行普通的 Java 编程吗?

java - Wicket:在 onSubmit 之后下载文件

java - Guice @SessionScoped 注释导致 IllegalArgumentException 与 Shiro HttpSession

java - Wicket 操作 javascript 导入顺序

java - LittleEndianDataInputStream 是否不稳定,特别是在 Linux 上?

Java读取数字文件并将其打印出来

java - Wicket 1.5 非模态窗口

css - Wicket - 删除陈旧的标题贡献/AJAX 面板替换