菜鸟程序员遇坑记1 - FormData 之传送文件数组和对象

菜鸟程序员遇坑记1 - FormData 之传送文件数组和对象

今天遇到一个需求,后端要求前端返回id ,文件数组,一个文件信息对象的形式发给他。而这个需求是之前一个提桶跑路的同事写的,然后我来接手,然后我就发现之前是用formData给后端一个字段对应一个文件,但是现在需求变更了,然后我模仿写了一下很尴尬的是后端除了id 之外收到其他两个字段里面都没有东西。
然后通过面向百度编程发现如果是想要以文件数组的形式发给后端动的话,这样是不行的。

// 字段名,文件数组
formData.append(‘array’, array);

下面才是正确的做法

// 字段名 + 下标 ,具体文件
formData.append(`array${index}`, array[index]);

然后好不容易把文件数组成功发给了后端竟然发现他还是拿不到对象
于是试了一系列方法 把对象转为JSON给后端等等后端还是拿不到
然后发现网上的大部分好像都是传键名:键值的来的
最后因为开发有点急无奈之下最后和后端讨论了一下只能把接口拆为两个,文件对象另外为json的形式发给他。

如果有大佬可以指导一下formdata怎么传对象,万分感谢!


之后有空会补充一些关于formdata的资料

可以使用 `@RequestParam` 注解来接受 formdata 中的文件数组对象。具体步骤如下: 1. 创建一个表单,其中包含一个 file input,可以选择多个文件: ```html <form method="POST" enctype="multipart/form-data" action="/upload"> <input type="file" name="files" multiple> <button type="submit">上传</button> </form> ``` 2. 在控制器中创建一个方法来处理上传请求,使用 `@RequestParam` 注解来接受文件数组对象: ```java @PostMapping("/upload") public String handleFileUpload(@RequestParam("files") MultipartFile[] files) { // 处理文件上传逻辑 } ``` 在上面的代码中,`@RequestParam("files")` 表示要接受名为 "files" 的参数,它是一个文件数组对象。`MultipartFile` 是 Spring 提供的一个文件上传对象,它封装了上传的文件内容、文件名等信息。 3. 处理文件上传逻辑,例如将文件保存到本地磁盘: ```java @PostMapping("/upload") public String handleFileUpload(@RequestParam("files") MultipartFile[] files) { for (MultipartFile file : files) { if (!file.isEmpty()) { try { byte[] bytes = file.getBytes(); Path path = Paths.get(file.getOriginalFilename()); Files.write(path, bytes); } catch (IOException e) { e.printStackTrace(); } } } return "redirect:/"; } ``` 在上面的代码中,我们遍历了文件数组对象,对于每个文件,判断它是否为空,如果不为空,则将文件内容保存到本地磁盘上。最后返回一个重定向到首页的视图。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值