2017-08-16 11 views
0

私は高低を検索し、これを1日、8時間、これに取り組んで、質問をする前にこれをやり直したいと思っています。ほとんどの例では、エンドポイントAPIがどのように見えるかを誰にも見せていないので、APIが何を期待しているかを見ることができ、フロントとバックエンドの両方を表示します。角2ファイルをJava Apiにアップロード

myJavaRootResource.java

@POST 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
@Produces(MediaType.APPLICATION_JSON) 
@Path("/import/{id}") 
public Response import(@FormDataParam("file") InputStream fileInputStream, @Context ServletContext application, 
     @Context HttpServletRequest request, @Context UriInfo info, @PathParam("id") Integer id) { 
    System.out.println("*** MADE it ***"); 
    ...blah blah... 
} 

は今私の角度2のコードで、私はそれを送信するためにどのようには考えている私は私の最も近くを掲載しますので、私はこの質問にカバーするためにあまりにも多くのことをたくさん試してみました試みる。不正な要求 - 私はこれをしようとすると、今、私は応答400を取得し、ここで呼び出しを行うサービスを呼び出すコンポーネントは、そのサービスの機能に

my.service.ts

importIt(id: number, myFile: File) { 
    const dataUrl = 'the/path/import/' + id; 

    const formData = new FormData(); 
    formData.append('file', myFile); 

    const headers = new Headers({'Content-Type': 'multipart/form-data'}); 
    let options = new RequestOptions({ 
     method: RequestMethod.Post, 
     headers: headers, 
    }); 

    return this.http.post(dataUrl, formData, options) 
     .map(res => res) 
     .catch(this.handleError.bind(this)); 

} 

である持っています。誰かが私が逃しているかもしれないものを見たり、何を修正するか考えていますか?

は、私はこれらのリンクを見てきましたし、それを一緒に入れ

  1. File Upload with Angular 2 to rest api
  2. Angular post uploaded file
+0

あなたはすでにこれを試みたかもしれないが、とにかく私はいくつかの残りのクライアント(たとえば、ポストマン)を介して個別にあなたのバックエンドのコードをテストし、バックエンドはうまく動作することを確認するためにあなたをお勧めします。その後、フロントエンドで実行されたhttp要求を交差させ、前に使用した有効なhttp要求と比較しようとするのではない場合。交差点のものは、郵便配達員を介して行うこともできます。 –

+0

私は交差点ではなく傍受を意味すると思います。 – AndreyS

+0

@AndreySあなたは正しいです、ありがとう。しかし、私はもうコメントを変更することはできません –

答えて

1

することができていない私は削除

だから私は私の問題への解決策を見つけました私の要求のヘッダーとそれが働いた。私はなぜapiがそれらのヘッダーを探しているのか分かりません。

my.service.ts

importIt(id: number, myFile: File) { 
    const dataUrl = 'the/path/import/' + id; 

    const formData = new FormData(); 
    formData.append('file', myFile); 

    let options = new RequestOptions({ 
     method: RequestMethod.Post 
    }); 

    return this.http.post(dataUrl, formData, options) 
     .map(res => res) 
     .catch(this.handleError.bind(this)); 
} 
関連する問題