2017-09-20 2 views
0

Ich lade eine Datei im angular2-Frontend hoch und empfange sie in einem Servlet. Die Datei wird an das Backend übergeben, aber im Browser erhalte ich einen Fehler in der Browserkonsole bei der beobachtbaren Subscribe.SyntaxError: Unerwartetes Token <in JSON an Position 3 Angular2 mit 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') 
    ); 

Servlets ist:

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); 
     } 

Was im Code falsch? Danke.

Antwort

0

Nun, ich habe es herausgefunden. Angular nimmt JSON immer als Eingaben von anderen Anwendungen (nach meiner Forschung, bitte korrigieren Sie mich, wenn ich falsch liege). Daher musste ich nur die String-Daten als JSON von meinem Servlet zur Verfügung stellen.

Verwandte Themen