2017-09-20 20 views
0

angle2フロントエンドでファイルをアップロードして、サーブレットで受け取っています。 ファイルはバックエンドに渡されますが、ブラウザでは、ブラウザのコンソールでsubscribe observableでエラーが発生しています。SyntaxError:位置3のJSONで予期しないトークン<Angular2 Servletの場合

AppComponent

fileChange(event) { 
const fileList: FileList = event.target.files; 
if (fileList.length > 0) { 
    const file: File = fileList[0]; 
    const formData: FormData = new FormData(); 
    formData.append('uploadF', file, file.name); 
    const headers = new Headers(); 
    /** No need to include Content-Type in Angular 4 */ 
    // headers.append('Content-Type', 'multipart/form-data'); 
    headers.append('Accept', 'text/html'); 
    const options = new RequestOptions({ headers: headers }); 
    // console.log('Reached here'); 
    this.http.post(`http://localhost:8080/ProjSecond/Uploader1`, formData, options) 
    .map((res) => {console.log(res.json()); }) 
    .catch(error => Observable.throw(error)) 
    .subscribe(
     resp => console.log('success' + resp), 
     error => console.log('error IS*&*&*&**' + error), // THIS LINE SHOWS ERROR 
    () => console.log('Operation Completed') 
    ); 

サーブレットは次のとおりです。

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    response.setHeader("Access-Control-Allow-Origin", "*"); 
    String oName = null; 
    //process only if its multipart content 
    if(ServletFileUpload.isMultipartContent(request)){ 
     try { 
      List<FileItem> multiparts = new ServletFileUpload(
            new DiskFileItemFactory()).parseRequest(request); 

      for(FileItem item : multiparts){ 
       if(!item.isFormField()){ 
        String name = new File(item.getName()).getName(); 
        item.write(new File("E:\\uploads\\" + name)); 
        System.out.println("filename: " + name); 
        oName = name ; 
       } 
      } 
      //File uploaded successfully 
      request.setAttribute("message", "File Uploaded Successfully"); 
      request.setAttribute("fileName" , oName); 
      //response.sendRedirect("/result.jsp"); 
     /* RequestDispatcher requestDispatcher; 
      requestDispatcher = request.getRequestDispatcher("/result.jsp"); 
      requestDispatcher.forward(request, response);*/ 
      request.getRequestDispatcher("http://localhost:4200/").forward(request, response); 

     } catch (Exception ex) { 
      request.setAttribute("message", "File Upload Failed due to " + ex); 
     } 

は、コード内で何が悪いのでしょうか?おかげさまで

答えて

0

私はそれを理解しました。 Angularは他のアプリケーションからの入力として常にJSONを使用します(私の研究ごとに、間違っていれば修正してください)。 私がしなければならなかったのは、サーブレットからJSONとして文字列データを提供することでした。

関連する問題