使用MultipartFile遇到的坑

在Java中使用MultipartFile上传文件时,遇到一个问题:当文件大小小于等于10kb,返回的输入流是ByteArrayInputStream,大于10kb则是FileInputStream。这种情况下,直接转换会抛出类型转换异常。解决方法是根据输入流类型进行不同的处理,确保正确读取和操作文件。
摘要由CSDN通过智能技术生成

java使用MultipartFile上传文件时,转换流的时候,遇到java.io.ByteArrayInputStream cannot be cast to java.io.FileInputStream错误

FileInputStream  fileInputStream = (FileInputStream) file.getInputStream();

正常情况下应该返回FileInputStream,但我遇到返回ByteArrayInputStream,因为ByteArrayInputStream与FileInputStream同是InputStream的子类,无法转换。

当文件小于等于10240b(10kb)的时候,返回的是ByteArrayInputStream
当文件大于10kb的时候,返回的FileInputStream

使用MultipartFile可以实现在前端向后端传输图片的功能。MultipartFile是Spring框架中的一个类,用于处理以表单形式上传文件的功能。通常,我们可以在后端使用Spring MVC框架进行配置和处理。具体步骤包括: 1. 在前端页面中,使用表单的方式选择文件并将其提交到后端。可以使用Vue.js和ElementUI组件库来实现前端交互。 引用 2. 在后端的Spring MVC配置文件中,需要配置一个名为"multipartResolver"的Bean,并指定上传文件的最大大小。这可以通过在Spring MVC的XML配置文件中添加以下代码来完成: <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="10485760"/> </bean> 引用 3. 在后端的控制器中,使用MultipartFile类型的参数来接收上传的文件。可以通过调用MultipartFile对象的方法来获取文件的相关信息,例如文件名、大小、内容等。 例如,可以在后端的控制器方法中添加以下代码来处理MultipartFile上传图片的功能: @RequestMapping(value = "/upload", method = RequestMethod.POST) public String handleFileUpload(@RequestParam("file") MultipartFile file) { // 处理上传的文件 // 可以通过file.getOriginalFilename()方法获取文件名 // 可以通过file.getSize()方法获取文件大小 // 可以通过file.getBytes()方法获取文件内容 // 具体的处理逻辑根据需求进行编写 return "success"; } 引用 通过以上步骤,就可以使用MultipartFile实现图片的上传功能了。请注意,还可以根据具体需求进行其他配置和处理,例如文件存储路径、文件类型限制等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [使用MultipartFile+ElementUi(el-upload)实现前端向后端传图片](https://blog.csdn.net/weixin_44084096/article/details/124202807)[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_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阳关的美好

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

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

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

打赏作者

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

抵扣说明:

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

余额充值