【问题标题】:Multipart File to File InputStream多部分文件到文件输入流
【发布时间】:2016-05-30 11:46:27
【问题描述】:

如何在内存中将MultipartFile 转换为FileInputStream

我已经尝试过,但我遇到了错误

org.springframework.web.multipart.commons.CommonsMultipartFile 不能 转换为 java.io.File

我的代码是

FileInputStream fis = new FileInputStream((File)file);

file 是一个多部分文件

【问题讨论】:

    标签: java eclipse spring file


    【解决方案1】:

    除非您的文件不在文件系统上,否则您无法创建 FileInputStream 的实例。

    您必须先使用

    将多部分文件保存在服务器上的临时位置
    file.transferTo(tempFile);
    InputStream stream = new FileInputStream(tempFile);
    

    但多部分文件也可以通过基本的流方法简单地读取,例如

    InputStream inputStream =  new BufferedInputStream(file.getInputStream());
    

    【讨论】:

    • 我想在最后删除临时位置(包括内容和路径)
    • @KaMaL - 如果您 100% 确定将来不需要此文件,则可以简单地删除该文件。但更好的方法是第二种方法,直接通过 InputStream 访问或通过 BufferedInputStream 访问更高效的版本。这样你就可以访问内存中的文件了。
    【解决方案2】:

    尝试使用:

    MultipartFile uploadedFile = ((MultipartHttpServletRequest)request).getFile('file_name')
    InputStream inputStream = new ByteArrayInputStream(uploadedFile?.getBytes())
    

    【讨论】:

      【解决方案3】:

      看看MultipartFile

      你可以选择:

      void    transferTo(File dest)
      

      此方法将接收到的文件传输到给定的目标文件。

      【讨论】:

      • 文件读取在 inMemory 中完成,所以我无法传输到任何目的地
      【解决方案4】:

      将 Multipart 文件转换为输入流

      MultipartFile file;
      InputStream inputStream = new InputStream(file.getInputStream());
      

      这对我有用。

      【讨论】:

      • 无法实例化InputStream。
      • InputStream 显示错误,无法实例化
      【解决方案5】:
      MultipartFile file;
      InputStream inputStream = file.getInputStream();
      

      【讨论】:

        【解决方案6】:

        对于多部分文件,例如:

        FileMultipartData part =  new FileMultipartData();
        InputStream inputStream = part.getFileMultipart().get(0).getByteStream();
        

        这在我的代码中对我有用。请尝试一下

        【讨论】:

          猜你喜欢
          • 2018-12-25
          • 1970-01-01
          • 1970-01-01
          • 2012-05-16
          • 2018-04-11
          • 2016-10-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多