Spring MVC 文件上传

前台控件

<input type="file" name=“select_file” id="select_id">

<button id="upload_button">上传文件</button>

如果要改变控件外观,可以用label关联input,将input隐藏

<label for="select_file">选择文件</label>

<input type="file" name=“select_file” id="select_file" style="display:none">

<button id="upload_button">上传文件</button>

 

js部分

$("#upload_button").change(function() {

  var file = document.getElementById("select_file").files[0];

  var formFile = new FormData();

  formFile.append("file", fileObj);

 

  var xhr = new XMLHttpRequest();

  xhr.open("post", url, true);

  xhr.onload = function() {

  alert("上传完成");

}

xhr.send(formFile);

 

$("#upload_button").change(function() {

  var file = document.getElementById("select_file").files[0];

  var formFile = new FormData();

  formFile.append("file", fileObj);

 

  var data = formFile;

  $.ajax({

    url:targeturl,

    data:data,

    type:"Post",

    dataType:"json",

    cache:false,

    processData:false,

    contentType:false,

    success:function(result) {

    alert("上传完成");

    },

  });

});

 

 

 

 

后台获取文件

MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());

MultipartHttpServletRequest multipartRequest = resolver.resolveMultipart(request);

MultipartFile file = multipartRequest.getFile("file");

String a1 = multipartRequest.getParameter("a1");

 

如果mvc-config.xml配置了如下内容,则上面的获取方式将报错

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

<!-- set the max upload size100MB -->

<property name="maxUploadSize">

<value>10485760000</value>

</property>

<property name="maxInMemorySize">

<value>4096</value>

</property> </bean>

 

配置后可以用以下两种方式可以获取到文件

1、指定@RequestParam MultipartFile file 例如:public Map<String, Object> logsUpload(@RequestParam MultipartFile file,@RequestParam(value="key") String key)参数;

2、将request转化为MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)(request);

 

获取到file文件后,可以

String path="D:/"+m+"b.txt";//随意定义保存路径

try {

  File newFile =new File(path)

  file.transferTo(newFile);

  String fileName = file.getName();

  InputStream inputStream = file.getInputStream();

  String content = file.getContentType();

  orgiginalFileName = file.getOriginalFilename();

  System.out.println("fileName: "+fileName+", inputStream: "+ inputStream +"\r\n content: "+content+", orgiginalFileName: ="+ orgiginalFileName +"\r\n projectName: ");

} catch (IOException e) {

  e.printStackTrace();

}

 

posted @ 2018-04-09 21:22  漠北烟  阅读(160)  评论(0)    收藏  举报