我花了几个小时把图像从angular发送到springboot。现在我得到一个错误:
org.springframework.web.multipart.multipartexception:当前请求不是多部分请求
前端(Angular )代码如下所示:
saveProduct(productSave: ProductSave, mainImg: File, imageList: File[]): Observable<any>
{
const formData = new FormData();
const formListData = new FormData();
formData.append('mainImg', mainImg, mainImg.name);
imageList.forEach( img => formListData.append('imageList', img));
return this.httpClient.post<ProductSave>(this.saveUrl, {productSave, mainImg, imageList});
}
mainimg和imagelist是从用户上传的图像,初始化如下:
mainImg = event.target.files[0];
imageList.push(event.target.files[0]);
我的后端(springboot)代码如下所示:
@PostMapping("/save")
public void saveProduct(@RequestBody ProductSave productSave, @RequestParam("mainImg")MultipartFile main, @RequestParam("imageList")MultipartFile[] multipartFiles)
{
System.out.println(productSave.getProduct().getName());
}
我真的不知道如何发送这些图像,我试图看看堆栈周围,但我失败了。
谢谢你的帮助!
2条答案
按热度按时间tzxcd3kk1#
问题出在spring引导控制器方法参数中。
在multipart请求中,您可以发送json请求主体。相反,您必须发送键值对。
所以,你有两种方法去做你想做的事-
发送json字符串,然后反序列化它。
spring boot api示例:-
html/javascript示例:-
在前面end:-
以字节数组形式发送文件,在这种情况下不需要在前端使用表单数据。
您可以在前端将文件对象转换为字节数组using:-
k3bvogb12#
在
application.properties
尝试设置以下内容-玩弄那玩意儿
max-file-size
.