【发布时间】:2018-04-17 19:07:50
【问题描述】:
我有一个api处理上传文件的请求(在spring boot中)如下:
@PostMapping("/api/admin/product/{id}/upload")
public ResponseEntity<Product> postUpload(@PathVariable("id") Integer id, @RequestParam("image") MultipartFile imageFile) {
Product product = productService.findOne(id);
return new ResponseEntity<>(productService.upload(product, imageFile),HttpStatus.OK);
}
以下是处理我的请求的服务。我应该如何修复它以适应上述 api?
@Injectable()
export class ProductServiceService {
private baseUrl = 'http://localhost:8080/api/admin/product';
private headers = new Headers({'Content-Type' : 'multipart/form-data', 'Access-Control-Allow-Origin' : '*'});
private options = new RequestOptions({headers: this.headers});
constructor(private _http: Http) { }
postUpload(id) {
const formdata: FormData = new FormData();
formdata.append('image', image);
return this._http.post(this.baseUrl + '/' + id + '/upload', formdata, this.options)
.map((res: Response) => res.json())
.catch(this.errorHandler);
}
errorHandler(error: Response) {
return Observable.throw(error || 'SERVER ERROR');
}
}
【问题讨论】:
-
您的 server 必须启用 CORS(并因此在 responses 中设置 Access-Control-Allow-Origin 标头)。阅读docs.spring.io/spring-boot/docs/1.5.8.RELEASE/reference/…。或者只是从您的 Spring 引导服务器提供您的 Angular 应用程序,这将使 CORS 变得不必要。
-
我已经在服务器和 Angular 应用程序上启用了 CORS。但是还是不行!
-
控制台中的错误另有说明。所以要么你没有,要么你做错了。
标签: json angular rest spring-boot file-upload