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();
}

浙公网安备 33010602011771号