通过MultipartFile上传Spring MVC文件有时会产生(!)空的InputSteam

我们使用简单的文件上传系统遇到了一个奇怪的问题。

设置是:Spring 3.2.2,commons fileupload 1.3,commons io 2.4。 我们实际上是从外部Tomcat 7.0.40直接运行Eclipse。 它已经在Mac OS X 10.8和10.6上测试过。

代码如下:

public void saveFile(MultipartFile file, String description) {
    System.out.println(file.getOriginalFilename());
    System.out.println(file.getSize());
    OutputStream out = new FileOutputStream("someFileName");
    IOUtils.copy(file.getInputStream(), out);
    out.flush();
    out.close();
}

它输出正确的文件名和正确的文件大小!

现在,当将文件写入磁盘时,它会生成一个0字节的文件。 这尤其发生在.docx文件中(大约95%的情况)。 它似乎取决于该文件。 图像和PDF文件似乎始终工作。

没有例外或任何其他提示。 调试器说InputStream是空的(不是null ,只是空的)。

对此行为的任何解释?


我会检查以下内容:

  • 您的服务器是否有防止未知程序将docx写入文件系统的防病毒/恶意软件软件。
  • 运行服务器的操作系统用户(因此将文件写入FS)是否具有足够的权限来执行此操作?
  • InputStream为空可能意味着上载的文档以EOF开头。 同时检查docx本身的内容可能是已损坏/某些文件编码问题会导致多字节字符解释为EOF。 我可能会通过以十六进制打印前几个字节来调试docx
  • 链接地址: http://www.djcxy.com/p/48773.html

    上一篇: Spring MVC file upload via MultipartFile gives sometimes(!) empty InputSteam

    下一篇: How to upload image to MediaWiki site from android