let formDatas = new FormData();
let sealValues = t.sealValues;
formDatas.append('pdfFile', t.parsePdfFile);
for(let i=0,len=sealValues.length;i<len;i++){
let locationInfo = sealValues[i];
formDatas.append('sealLocationInfoList['+i+'].posX',locationInfo.posX);
formDatas.append('sealLocationInfoList['+i+'].posY',locationInfo.posY);
formDatas.append('sealLocationInfoList['+i+'].signOnPage',locationInfo.signOnPage);
formDatas.append('sealLocationInfoList['+i+'].sealId',locationInfo.sealId);
2.后端接收
@RequestMapping(path = "/stamp", method = RequestMethod.POST)
public ResponseEntity<Map<String, Object>> stamp(
HttpServletRequest req,
@Param("pdfFile") MultipartFile pdfFile, SealLocationInfoRequest request
3.后台映射对象
public class SealLocationInfoRequest implements Serializable {
private static final long serialVersionUID = 2392716281569231777L;
private Long contractId;
private String filePath;
private List<SealLocationInfo> sealLocationInfoList;
public class SealLocationInfo implements Serializable {
private static final long serialVersionUID = -8706741125508276806L;
private Integer posType;//定位或关键字
private float posX;
private float posY;
private String signOnPage;
private Long sealId;
private String key;
private float width;
private Integer signType;//2.骑缝章 1.其他
1.前端let formDatas = new FormData();let sealValues = t.sealValues;formDatas.append('pdfFile', t.parsePdfFile);for(let i=0,len=sealValues.length;i<len;i++){ let locationInfo = sealValues[i]; formDatas.append('sealLocationInfoList['+i+'].posX
菜鸟程序员遇坑记1 - FormData 之传送文件数组和对象
今天遇到一个需求,后端要求前端返回id ,文件数组,一个文件信息对象的形式发给他。而这个需求是之前一个提桶跑路的同事写的,然后我来接手,然后我就发现之前是用formData给后端一个字段对应一个文件,但是现在需求变更了,然后我模仿写了一下很尴尬的是后端除了id 之外收到其他两个字段里面都没有东西。
然后通过面向百度编程发现如果是想要以文件数组的形式发给后端动的话,这样是不行的。
// 字段名,文件数组
formData.append(‘arra
FormData对象,是可以
使用一系列的键值对来模拟一个完整的表单,然后
使用XMLHttpRequest发送这个”表单”。 在 Mozilla Developer 网站
使用FormData对象 有详尽的
FormData对象使用说明。 但上
传文件部分只有底层的XMLHttpRequest
对象发送上
传请求,那么怎么通过jQuery的Ajax上
传呢? 本文将介绍通过jQuery
使用FormData对象上
传文件。
使用<
form>表单初始化
FormData对象方式上
传文件
HTML代码
<
form id="upload
Form" enctype="multipart/
form-
data">
for (var i = 0; i < this.checkFileimageObj.length; i++) {
one.set('annexList[' + i + '].file', this.checkFileimageObj[i].raw)
这是HTML5中新增的一个Api,他能以表单对象作为参数,自动的把表单的数据打包,当ajax发送数据时,发送这个FormData对象,以达到发送表单数据的目的。创建:
参数是一个form节点对象var fm = document.getElementById('formid');
var fd = new FormData(fm);优点:
(1)在以往的ajax做post请求时,当提交的数据比较
<br />对于一个问题的多个答案,如果我们可以通过form表单传递数组,那程序处理起来会简单多了:<br /><table><br />
<tr><br />
<td><input type="checkbox" name="how_hear[]" id="how_hear1" value="Website" ></td><br />
<td style="padding-left:3px"><label for="how_hear1">Website</label></td><br />
要接收一个 FormData 数组对象,你可以在 Spring MVC 控制器方法中使用 `@RequestParam` 注解。假设你的表单中有一个名为 `formDataArray` 的数组对象,你可以这样接收:
```java
@PostMapping("/formdata")
public String handleFormData(@RequestParam("formDataArray") List<FormData> formDataArray) {
// 处理 FormData 数组对象
return "success";
在这个例子中,`@RequestParam` 注解中的参数值 `"formDataArray"` 对应了表单中的 FormData 数组对象的名称。Spring MVC 将会自动将表单数据转换成 `List<FormData>` 对象,并传递给控制器方法。
如果你的表单中还有其他的字段需要接收,你可以在控制器方法中添加更多的参数和注解。例如,假设表单中还有一个名为 `username` 的文本字段,你可以这样接收:
```java
@PostMapping("/formdata")
public String handleFormData(@RequestParam("formDataArray") List<FormData> formDataArray,
@RequestParam("username") String username) {
// 处理 FormData 数组和用户名
return "success";
在这个例子中,Spring MVC 将会自动将表单中的 `username` 字段的值转换成 `String` 类型,并传递给控制器方法。