【问题标题】:ms word file download issue in servlet from unix server to windowsservlet中从unix服务器到windows的ms word文件下载问题
【发布时间】:2017-11-11 10:18:46
【问题描述】:

在将 doc 文件(示例 test.doc)上传到服务器(unix 机器)时,我正在使用 apache commons jar,它在服务器端为我提供了 FormFile 实例,其中包含所有数据字节数组形式。

当我将相同的字节数组写入响应输出流并将其发送到浏览器以下载相同的文件时,会显示奇怪的内容。我弹出一个选择编码,我想在其中查看数据,并且奇怪的数据显示在该文档中。内容类型设置如下:

response.setContentType("application/msword");
response.setHeader("Content-Disposition", "attachment;filename=test.doc");

我认为在将数据写入输出流时,还写入了与 doc 文件相关的元数据,这导致了这个问题。

是否有任何特定于 doc 或 docx 文件格式的内容,需要这样做以使文件格式正确,并且我可以看到我上传的正确数据或遗漏了什么?

任何帮助将不胜感激。

提前致谢。

如果需要更多信息,请告诉我。

【问题讨论】:

  • 文件就是文件;没有对文件内容进行任何操作。下载内容时,您的内容设置可能存在问题。
  • 上传时如何读取输入流?下载的时候怎么写输出流?
  • 我找到了解决方案。将数据读取和写入文件没有任何问题。相反,问题在于其中一个过滤器会弄乱响应。我非常感谢迄今为止收到的所有回复。谢谢大家。

标签: java servlets file-upload download struts1


【解决方案1】:

Microsoft 中存在一个已知问题,它提供了解决方法 Encoding Pop Up

【讨论】:

    【解决方案2】:

    它可能无法解决您的问题,因为我没有运行任何测试。但要检查正确的 mime 类型,请参考此链接:

    https://technet.microsoft.com/en-us/library/ee309278(office.12).aspx

    更新:

    您可以使用响应类型为 ArrayBuffer 并将内容设置为 Blob。

    Blob([response], {type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'});
    

    或者这可以工作

    response.setContentType("application/x-msdownload"); response.setHeader("Content-disposition", "attachment; filename="+ fileName);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 2023-04-07
      • 2011-04-25
      相关资源
      最近更新 更多