使用$.ajax上传文件、上传List数组

本文详细介绍在SpringBoot框架下,如何使用$.ajax进行文件上传和列表数据上传。包括创建Form表单,处理中文乱码,使用FormData上传文件,以及上传JSON格式的列表数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在项目用的最多的框架是spring boot框架,在该框架下如何使用$.ajax上传文件、上传列表,下面会通过示例代码来说明。

1.上传文件

//js创建Form表单
var userFormData = new FormData();
//将页面中的Form表单中的数据放入userFormData中
/**
dataModelForm表单内容
<form id="dataModalForm">
	<input type="hidden" name="userId" value="0000001"></input>
	<input type="text" name="userName" value="李四"></input>
	<select name="text">
		<option value="">-请选择-</option>
		<option value="male" selected>男</option>
		<option value="female"></option>
	</select>
	<textarea name="descripton" row="5">描述</textarea>
	<input type="file" name="profileDoc"></input>
</form>
*/
var userArr = $("dataModalForm").seializeArray();
for( i in userArr ){
	//防止中文乱码
	userFormData.append(userArr[i].name,encodeURI(userArr[i].value);
}
$.ajax({
	url:'http://localhost:8080/myProject/saveUser',
	method:'POST',
	//提交的时候不会序列化userFormData,而是直接使用userFormData
	processData:false,
	//不设置contentType类型,避免jQuery对Ajax封装,使提交的时候失去变量间的分割符
	//分隔符类似如:Content-Type: multipart/form-data; boundary=uwYCf43a7aa122d93ab066dc
	contentType:false,
	data:userFormData,
	success:function(res){
		alert("保存成功");
	},
	error:function(res){
	}
});
@RequestMapping(value="saveUser")
public String saveUser(UserEntity user,MultipartHttpServletRequest request) throw Excetpion{
	//防止中文乱码
	URLDecodeUtil.beanURLDecode(user);
	for(Entry<String,String> elem:filePathMap.entrySet()){
		MultipartFile mulitiFile = request.getFile(elem.getKey());
		String rootPath = UserController.class.getClass().getResource("/").getPath()+"/file/":
		SimpleDateFormat sdf = new simpleDateFormat("yyyyMMddHHmmssSS");
		String filename = elem.getKey()+".jpg");
		String filePath = rootPath + fileName;
		File file = new File(filePath);
		if(!file.getParentFile().exists()){	
			file.getParentFile().mkdirs();
		}
		multiFile.transferTo(file);
		user.setProfileDoc("/file/"+fileName);
	}
	//业务层保存用户信息
	userService.saveUser(user);
}

2.上传List数据

var project = {
	projectId:"",
	projectName:""
};
var projectRelatedPersons = [{
	userId:"",
	userName:"",
	relation:"项目经理",
},{
	userId:"",
	userName:"",
	relation:"项目监理",
},{
	userId:"",
	userName:"",
	relation:"项目成员",
}];
$.ajax({
	url:"http://localhost:8080/myProject/save",
	method:"POST",
	data:JSON.stringify({
		project:project,
		projectRelatedPersonList:projectRelatedPersons
	}),
	contentType:"application/json;charset=utf-8",
	success:function(res){
		alert("success")
	}
});
public class ProjectVO{
	private projectEntity project;
	private List<ProjectRelatedPerson> projectRelatedPersonList;
	//属性get、set方法
	......
}

@RestController("/")
public class ProjectController{
	@RequestMapping(value="save")
	public String save(@RequestBody ProjectVO projectVO) throw Exception{
		//相关的信息保存
		this.projectService.save(projectVO);
	}
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风水月

从心底相信自己是成功的第一步

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值