2017-04-05 10 views
-2

Ich bin neu zu Rest API zu entwickeln, habe ich versucht, diese unten Methoden zum Hochladen einer Datei mit HTML dieser Code funktioniert. Dann habe ich das im Postboten versucht. Ich bekam eine positive Antwort, aber die Datei wurde nicht hochgeladen. Darf ich wissen, was ich falsch gemacht habe?Datei nicht hochgeladen mit Knoten js multer

var express  = require("express"); 
    var app   = express(); 
    var multer = require('multer') 

var storage = multer.diskStorage({ 
    destination: function (req, file, callback) { 
    callback(null, './uploads'); 
    }, 
    filename: function (req, file, callback) { 
    callback(null, file.fieldname + '-' + Date.now()+".jpg"); 
    } 
}); 

var upload = multer({ storage : storage}).single('userPhoto'); 

Ich verwendete diese Methode unten, um eine Datei hochzuladen. Es funktioniert, wenn ich eine Datei mit HTML hochlade. Aber wenn ich dies mit Postboten versuchte ich bekam Datei hochgeladene Nachricht. Aber im Zielordner gibt es keine Datei.

app.post('/api/photo',function(req,res){ 
    upload(req,res,function(err) { 
     if(err) { 
     // res.end({"error" : true,"message" : "Error uploading file."}); 
     res.end("Error uploading file."); 
     } 
    res.end("File is uploaded"); 
     // res.json({"error" : false,"message" : "File is uploaded"}); 
    }); 
}); 

Hier habe ich meine HTML-Datei hinzugefügt

<html> 
    <head> 
    <title>File upload Node.</title> 
    </head> 
    <body> 
     <form id="uploadForm" 
      enctype="multipart/form-data" 
      action="/api/photo" 
      method="post"> 
     <input type="file" name="userPhoto" /> 
     <input type="submit" value="Upload Image" name="submit"> 
     <span id = "status"></span> 
    </form> 
    </body> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
    <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery.form/3.51/jquery.form.min.js"></script> 
    <script> 
    $(document).ready(function() { 

    $('#uploadForm').submit(function() { 
     $("#status").empty().text("File is uploading..."); 

     $(this).ajaxSubmit({ 

      error: function(xhr) { 
        status('Error: ' + xhr.status); 
      }, 

      success: function(response) { 
        console.log(response) 
        $("#status").empty().text(response); 
      } 
    }); 

    return false; 
    });  
}); 
    </script> 
</html> 

ich viele Möglichkeiten versucht, aber ich kann jede Lösung nicht finden, Kann jemand bitte helfen Sie mir, dieses Problem zu beheben?

Antwort

0

Code funktioniert gut, Problem passiert wegen der Anfrage Header.

{"Content-Type":"application/json"} 

Ich habe es gerade entfernt.

Diese answer hat mir geholfen, dieses Problem zu beheben

Verwandte Themen