记使用SpringMVC实现文件上传中的坑

改造原有系统,使用springMVC框架,实现文件上传。

一、前端页面使用html而不是jsp,如果使用form提交没有问题,但是现在要使用ajax上传,检索百度,发现使用FormData解决问题,具体如下:

       1、Html页面中也要加入form标签,且 method='post',enctype="multipart/form-data"

<form method="post"  enctype="multipart/form-data" id="uploadForm">

     ............
     ............
     ............

</form>

       2、创建FormData对象

var formData = new FormData(document.getElementById('uploadForm'));

            如果想要再增加一些参数可以使用append方法进行添加

formData.append("userName",userName);

       3、将创建的formData对象当成ajax参数进行传递即可。

二、能够上传文件了,但是传递的文件类型是MultipartFile对象,想要转换成File对象,操作如下:

CommonsMultipartFile cf= (CommonsMultipartFile)request.getParameters("file"); 
DiskFileItem dfi = (DiskFileItem) cf.getFileItem();
File file = dfi.getStoreLocation();

三、坑来了,由于原来的程序在解析XML文件的时候要求有临时文件,开始测试上传时,7条数据没有问题,后台改成1条数据了就怎么也不能传递了,后台异常 FileNotFound,这有点奇怪,这文件用原来的系统(1条数据)能加载啊,怎么这个就不行,怀疑是SpringMVC上传的问题,参数?使用springMVC上传文件需要配置 multipartResolver,如下:

<bean id="multipartResolver"
          class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <!-- 上传文件大小上限,单位为字节(10MB) -->
    <property name="maxUploadSize">
        <value>10485760</value>
    </property>
    <property name="maxInMemorySize"><!--上传文件的大小超过时 放在temp临时文件中-->
        <value>4096</value>
    </property>
    <!-- 请求的编码格式,必须和jSP的pageEncoding属性一致,以便正确读取表单的内容,默认为ISO- 
          8859-1 -->
    <property name="defaultEncoding">
        <value>UTF-8</value>
    </property>
</bean>

注意:bean 的 id 一定是 multipartResolver

就是这个

<property name="maxInMemorySize">
    <value>4096</value>
</property>

 造成了没有生成临时文件,检查了一条数据的文件大小刚好是3.8k,不生成临时文件,后面在解析文件是报错,改小就能解决了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值