【发布时间】:2020-08-06 21:33:28
【问题描述】:
我需要使用 Angular 和 Spring Boot 上传文件。
角度服务:
const httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/json;multi-part/form-data'})
};
addProduct(productRequest: ProductRequest, creator: string, tradeReference: string, selectedImage: File) {
const trimCreator = creator.trim();
const trimTradeReference = tradeReference.trim();
const formData = new FormData();
formData.append('images', selectedImage);
return this.http.post<any>(baseUrl + '/addProduct', {formData, productRequest, trimCreator, trimTradeReference} , httpOptions)
.pipe(
catchError(this.handleError)
);
}
我的后端 Rest 服务如下:
@ApiOperation(value = "add product", response = Iterable.class)
@ApiResponses(value = { @ApiResponse(code = 200, message = "Successfully added product") })
@PostMapping("/addProduct")
public void addProduct(@RequestPart(value = "images") MultipartFile[] images,
@RequestPart(value = "product") Product product,
@RequestPart(value = "creator") @ApiParam(value = "creator") String creator,
@RequestPart(value = "tradeReference") @ApiParam(value = "tradeReference") String tradeReference
) throws Exception {
Arrays.asList(images)
.stream()
.forEach(image -> uploadImages(image, product));
traderServices.addProduct(product, creator, tradeReference);
}
错误:
{"timestamp":"2020-04-23T13:35:03.114+0000","status":500,"error":"内部 服务器错误","message":"当前请求不是多部分的 请求","trace":"org.springframework.web.multipart.MultipartException: 当前请求不是多部分请求\r\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestPartMethodArgumentResolver.resolveArgument(RequestPartMethodArgumentResolver.java:158)\r\n\tat ,"路径":"/api/trader/addProduct"}
我尝试像更新 PostMapping
@PostMapping(value = "/'addProduct", 消耗 = {MediaType.MULTIPART_FORM_DATA_VALUE, MediaType.APPLICATION_JSON_VALUE})
我也删除了使用角度服务中的信息和标头信息,但它不起作用。
使用邮递员,它工作正常。
所以无法理解为什么它不起作用!
谢谢
【问题讨论】: