springmvc+ajax+formdata上传图片(网络资源,以作备用)
1、springmvc项目想要上传文件,需要使用multipart方式,所以在spring-mvc.xml配置文件中需要增加multipart相关配置,代码如下
jsp代码
需要注意的是,form 的 enctype 值必须为 multipart/form-data,这样才能在提交表单的时候传递文件数据。 如果要一次选择多个文件,可以在file表单添加"multiple",这样在选择文件时可以一次选择多个文件。
js代码
function morePicUpload(){
var formData = new FormData(document.getElementById("fileForm"));
alert(0);
$.ajax({
url : basePath+"morePicUpload",
type : "post",
data :formData,
async : false,
cache : false,
dataType : “json”,
contentType : false,
processData : false,
success : function(data){
//code
}
});
}
先创建formData,用来存放表单中的内容,"fileForm"为jsp页面中form的id。
4、最后的是controller,代码如下
@RequestMapping("/morePicUpload")
@ResponseBody
public ResultTo morePicUpload(HttpServletRequest request){
ResultTo resultTo = new ResultTo();
resultTo.setData("");
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
String id = multipartRequest.getParameter("id");
String name = multipartRequest.getParameter("name");
System.out.println(id);
System.out.println(name);
List<MultipartFile> filelist = multipartRequest.getFiles("pic");
for(MultipartFile file:filelist){
if(!file.isEmpty()){
System.out.println(file.getOriginalFilename());
}
}
return resultTo;
}
使用"MultipartHttpServletRequest"可以获取form表单中的所有空间内容,文件可以通过"List filelist = multipartRequest.getFiles(“pic”);"方式获取,然后进行文件的上传等操作就行了。
续写上传
List filelist = multipartRequest.getFiles(“picUrl”);
for(MultipartFile file:filelist){
if(!file.isEmpty()){
// 图片上传
// 设置图片名称,不能重复,可以使用uuid
String picName = UUID.randomUUID().toString();
// 获取文件名
String oriName = file.getOriginalFilename();
// 获取图片后缀
String extName = oriName.substring(oriName.lastIndexOf("."));
// 开始上传
file.transferTo(new File(“D:/images/” + picName + extName));
// 设置图片名到商品中
tstore.setPicUrl(picName + extName);
}
}
tstore.setStoreName(storeName);
tstore.setStoreGrade("1");//1普通
tstore.setStoreStuts("1");//状态默认未审核
tstore.setStoreJianjie(storeJianjie);
tstore.setStorePeoid(Integer.parseInt(storePeoid));//店家id
tstore.setStorePeophone(storePeoid);
tstore.setClassifyId(Integer.parseInt(classifyId));//分类
tstore.setRenqi(0);//人气默认0
int addRes = storeAdministrationService.addStore(tstore);
if(addRes>0){
return "ok";
}else{
return null;
}