2017-11-05 1 views
2

は、私は次のようにAPIが(春ブーツで)ファイルをアップロードするリクエストを処理してい:以下 spring bootから4番のアップロードファイルをアップロードしますか?

@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'); 
 
    } 
 
}
そして、これは後に enter image description here 感謝を構築エラーです!あなたが共有するコードに基づいて、私の観測のほとんど

+1

**サーバー**はCORSを有効にする必要があります(**応答**のAccess-Control-Allow-Originヘッダーを設定する必要があります)。 https://docs.spring.io/spring-boot/docs/1.5.8.RELEASE/reference/htmlsingle/#boot-features-corsを読んでください。または、CORSが不要になるように、Springブートサーバーから角型アプリケーションを提供するだけです。 –

+0

私はサーバーと角型アプリケーションでCORSを有効にしました。 しかし、まだ動作しません! –

+1

コンソールのエラーには、そうでなければ表示されます。だからあなたはいないか、あなたはそれを間違ってやったのです。 –

答えて

0

  • private headers = new Headers({'Content-Type' : 'application/json'});。これは間違っている、コンテンツタイプはmultipart/form-data
  • this._http.getする必要があります - これはPOST
  • ファイルは、私はあなたに正確な答えを与えるために角度を熟知していないですimage要求のparam

によって関連付けられている必要がありますする必要があります。

更新:

クライアントアプリケーションが別の春ブートアプリケーションであれば、あなたの角度JSアプリにZuulプロキシを実行し、http://localhost:8080/api/api URLをマッピングすることができます。あなたのクライアントアプリからそうzuul.routes.api.url http://localhost:8080/api

あなたはAPIを呼び出す:Zuulプロキシが@EnableZuulProxy *プロパティに次の追加と設定クラスに注釈を付ける*あなたのポンポン にspring-cloud-starter-zuulへの依存を追加する* のと同じくらい簡単です有効http://localhost:4200/api/admin/product/17/uploadをして、クライアントアプリ(Zuulプロキシを使用)は、サーバーでhttp://localhost:8080/api/admin/product/17/uploadを呼び出します。

+0

私は再コーディングしましたが、まだ動作していません。私はそれを改訂します。 ありがとう! –

+0

'{'Content-Type': 'multipart/form-data'、 'Access-Control-Allow-Origin': '*'}'を '{'enctype': 'multipart/form -data '} '。しかし、私もあなたの助けに感謝します。 –

関連する問題