MultipartFile转换为InputStream

创建输入流InputStream是需要文件对象或者文件地址

所以我们需要把MultipartFile转为文件,存储到临时文件,然后转为输入流

最后记得删除文件

关键代码其实就try代码快 中间 三行

// MultipartFile转换为InputStream
public InputStream multipartToInputStream(MultipartFile multipartFile) throws IOException {
        InputStream inputStream = null;
        File file = null;
        try {
            // 创建临时文件
            file = File.createTempFile("temp", null);
            // 把multipartFile写入临时文件
            multipartFile.transferTo(file);
            // 使用文件创建 inputStream 流
            inputStream = new FileInputStream(file);

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            // 最后记得删除文件 
            file.deleteOnExit();
            // 关闭流
            inputStream.close();
        }
        return inputStream;
    }

这里要注意:MultipartFile 中的transferTo(file)

MultipartFile中的transferTo(file)方法只能使用一次;

并且使用transferTo方法之后不可以在使用getInputStream()方法;

否则再使用getInputStream()方法会报异常java.lang.IllegalStateException: File has been moved - cannot be read again;

使用transferTo(file)方法将上传文件写到服务器上指定的文件;

原因文件流只可以接收读取一次,传输完毕则关闭流;

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要将MultipartFile转换InputStream,可以使用以下方法: 1. 首先,通过MultipartFile的getInputStream()方法获取文件的输入流。这个方法可以直接返回一个InputStream对象。 2. 另一种方法是通过创建临时文件来实现转换。可以使用以下代码: ```java public InputStream multipartToInputStream(MultipartFile multipartFile) throws IOException { InputStream inputStream = null; File file = null; try { // 创建临时文件 file = File.createTempFile("temp", null); // 把multipartFile写入临时文件 multipartFile.transferTo(file); // 使用文件创建InputStreaminputStream = new FileInputStream(file); } catch (Exception e) { e.printStackTrace(); } finally { // 最后记得删除文件 file.deleteOnExit(); // 关闭流 inputStream.close(); } return inputStream; } ``` 在这个方法中,首先创建一个临时文件,然后将MultipartFile写入临时文件。接着,使用文件创建一个InputStream对象。最后,记得删除临时文件并关闭流。 需要注意的是,转换过程中使用了MultipartFile的transferTo(file)方法来将文件写入临时文件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [InputStreamMultipartFile的相互转换](https://blog.csdn.net/weixin_45721235/article/details/131306743)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [MultipartFile转换InputStream](https://blog.csdn.net/weixin_50726818/article/details/127052304)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿毛~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值