关于SpringMVC上传文件的一些细节和需要注意的地方

本文介绍了在SpringMVC框架中实现文件上传所需的关键步骤,包括前端表单配置、后端配置、依赖引入及异步提交注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意点一:  前端form表单必须添加  enctype="multipart/form-data"属性,并且使用POST提交

注意点二:   必须在SpringMVC的配置文件中添加上传的支持和相关jar包

 <!-- 處理文件上傳 -->
    <bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf8" /> <!-- 默认编码 (ISO-8859-1) -->
<property name="maxUploadSize" value="-1" /> <!-- 最大文件大小,-1为无限止(-1) -->
    </bean>

<!-- 文件上傳jar包 -->
    <dependency>  
       <groupId>commons-fileupload</groupId>  
       <artifactId>commons-fileupload</artifactId>  
       <version>1.3.1</version>  
    </dependency>  

注意点三:  假如使用的是异步提交表单,需要借助jq.form.js插件(别人写好的插件)进行异步提交或者easyui里面封装好的                表单提交

注意点四:   因为表单加了enctype="multipart/form-data"属性,表单会转化为二进制流的形式进行传输,如果后台用对象                 bean的形式进行接受,且前台表单里的file框的name属性是你的对象中的图片的字段名(一般用的String类                   型)。如果是这种情况就会报错,因为无法将二进制形式的数据转化为字符串形式,此时应该如何解决                       解决:前台的file框的name属性不能用你的对象中那个用来存储图片路径的字段的名称,换一个别的名字,然后               在后台这样进行接受                                                                                               @RequestParam("file") CommonsMultipartFile file,然后它就不会报错了,然后将上传好的文件的路径在set               进去你那个对象用来保存图片路径的字段里面                                                                         上传文件相关的代码:                                                                                    public Map<String, Object> addData(Message message,ModelMap modelMap,@RequestParam("file") CommonsMultipartFile file,HttpServletRequest request) throws IllegalStateException, IOException{


System.out.println(message);
System.out.println(file);
long  startTime=System.currentTimeMillis();
       System.out.println("fileName:"+file.getOriginalFilename());
       
       String path= request.getSession().getServletContext().getRealPath("/")+"upload\\"+new Date().getTime()+file.getOriginalFilename();
       System.out.print(path);
       File newFile=new File(path);
       //通过CommonsMultipartFile的方法直接写文件(注意这个时候)
       file.transferTo(newFile);
       long  endTime=System.currentTimeMillis();
       System.out.println("方法二的运行时间:"+String.valueOf(endTime-startTime)+"ms");
//System.out.println(mesName);
return null;
}        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值