springMVC使用transferTo方法方便快速上传文件
在web开发中,常常会遇到上传文件的需求,比如上传视频和图片,之前做上传功能的时候,就是使用IO流来操作,这种需要熟悉IO各种输入输出流,当然还是希望能对IO进行深度学习,如今可以尝试使用transferTo()来进行文件的上传操作,transferTo()源码底层还是io流来操作
前端页面写法(form表单提交):
<form id="formfile" action="slideshowin" method="post" enctype="multipart/form-data">
<label class="col-sm-2 control-label no-padding-right" for="form-field-1">视频:</label>
<div class="col-sm-3">
<input type="file" id="media" name="myfile" />
<input type="hidden" name="mediaName" value=""/>
</div>
<input type="button" class="btn btn-small btn-base" title="保存" onclick="tijiao();" value="保存">
</form>
js提交为jq的ajax提交form表单
获取表单,必须加[0]才能取到数据
var formData =new FormData($("#formfile")[0]);
$.ajax({
url: url,
type: "POST",
data: formData,
cache:false,
contentType: false,
processData: false,
success: function (dat) {
},
error: function (dat) {
}
});
mvc xml文件配置
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="209715200"/>
<property name="defaultEncoding" value="UTF-8"/>
<property name="resolveLazily" value="true"/>
</bean>
后台代码提交
public void fileUpload(@RequestParam("myfile") MultipartFile[] myfile) {
try {
int len = myfile.length;
for (int i = 0; i < len; i++) {
MultipartFile file = myfile[i];
if (file.isEmpty()) {
// TODO文件为空时处理
return;
} else {
file.transferTo(new File("服务器文件上传目录" + file.getName()));
//入库业务
Slideshow slideshow=new Slideshow();
slideshow.setSlideshowImg(file.getOriginalFilename());//文件名
slideshow.setSlideshowState(0);
slideshow.setSlideshowTime(new DataTime().getDatatime());
slideshowService.insert(slideshow);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return;
}