文件上传 MultipartResolver

Exisi 2022-06-28 14:14:13
Categories: Tags:

 

  1. CommonsMultipartResolver

CommonsMultipartResolver使用commons Fileupload来处理multipart请求,所以在使用时,必须要引入相应的jar

 

  1. StandardServletMultipartResolver

StandardServletMultipartResolver是基于Servlet3.0来处理multipart请求的,所以不需要引用其他jar包,但是必须使用支持Servlet3.0的容器才可以

 

 

属性名

描述

<file-size-threshold>

当数据量大于该值时,内容将被写入文件。否则写入内存,默认值为0

<location>

上传临时存放生成的文件地址。只能为绝对路径,默认为空""

<max-file-size>

允许上传的文件最大值。默认值为 -1,表示没有限制。

<max-request-size>

针对该 multipart/form-data 请求的最大数量,默认值为 -1,表示没有限制。

示例

<!-- web.xml添加multipart-config -->

<servlet>

  <servlet-name>AcrWeb</servlet-name>

  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

  <load-on-startup>1</load-on-startup>

 

  <multipart-config>

    <max-file-size>52428800</max-file-size>

    <max-request-size>52428800</max-request-size>

    <file-size-threshold>0</file-size-threshold>

  </multipart-config>

</servlet>

 

<bean id="multipartResolver"  class="org.springframework.web.multipart.support.StandardServletMultipartResolver">  

</bean> 

 

<script src="<c:url value="/asset/admin/js/uploadify/jquery.uploadify.min.js"/>"></script> 

     

     //Input file与插件进行绑定

$("#apk_upload").uploadify({

    swf: "<c:url value='/asset/admin/js/uploadify/uploadify.swf'/>",

    //cancelImg : "<c:url value='/asset/admin/js/uploadify/uploadify-cancel.png'/>",

    uploader: "/acr/admin/app/apkupload",

    fileObjName: "file", //对应着文件输入框

    width: 300,

    buttonText: '<img src="/acr/asset/admin/js/uploadify/upload.png" />',

    // onInit: function () { $(".uploadify-queue").hide();  },

    //removeCompleted : false,

    onUploadSuccess: function (file, data, response)    {

        $("#apkUrl").val(data);

    },

    onUploadError: function (file, errorCode, errorMsg, errorString)    {

        alert('文件 ' + file.name + ' 上传失败: ' + errorString);

    }

}

);

 

@RequestMapping(value = "/apkupload", method = RequestMethod.POST)

public @ResponseBody  String apkUpload(

    @RequestParam MultipartFile file,

    Model model,

    HttpServletRequest request) throws IOException{

    InputStream input = null;

    OutputStream output = null;

    String root = "H:/file";

    //生成了文件名字

    String filename = file.getOriginalFilename();

    //文件要上传的位置

    String fileFullName = buildUpPath(root, filename);

    try {

        File dir = new File(root);

        if(!dir.exists()) {

            dir.mkdirs();

        }

        input = file.getInputStream();

        output = new FileOutputStream(new File(fileFullName));

        //保存文件

        IOUtils.copy(input, output);

    } catch (Throwable e)    {

        throw e;

    } finally {

        IOUtils.closeQuietly(input);

        IOUtils.closeQuietly(output);

    }

    return root + "/" + filename;

}