2016-07-20 26 views
0

Ich versuche, eine Datei von angular an Knoten zu übergeben.Datei als Parameter an Backend übergeben

Ich habe es geschafft, das Frontend in Gang zu bringen. Es ermöglicht dem Benutzer, eine Datei zu wählen, die sie dann acess in der Steuerung hat:

scope.upload = function() { 

    if (scope.file) { 
    var uniqueFileName = 'Test/' + scope.file.name; 
    var params = { 
     Key: uniqueFileName, 
     ContentType: scope.file.type, 
     Body: scope.file 
    }; 
    console.log(params); // Params contains the file I wish to pass to node 
    } 

} 

Nun, wie kann ich diesen Parameter übergeben an den Knoten?

Lassen Sie uns sagen, dass ich auf dem Server eine Route wie folgt erstellt:

app.post('/upload', function(req, res) { 

// Can I get req to hold the param maybe? 

}); 

Ist es möglich für mich, dass der Parameter direkt von der ng-Controller auf dieser Strecke irgendwie passieren?

Danke

EDIT:

Das ist, was ich bisher habe:

scope.upload = function() { 

    if (scope.file) { 
    var uniqueFileName = 'Test/' + scope.file.name; 
    var params = { 
     Key: uniqueFileName, 
     ContentType: scope.file.type, 
     Body: scope.file 
    }; 
    console.log(params); // Params contains the file I wish to pass to node 
    $http 
     .post('/uploads', {stickie: params}) 
     .success(function(data){ 
      //what to do here 
     }) 
     .error(function(data){ 
      console.log('Error: ' + data); 
     }); 
    } 

sollte ich hinzufügen, dass die Datei im Pass zu Knoten ein pdf versuchen ist.

Jetzt kann ich das das params-Objekt innode wie folgt zugreifen:

app.post('/uploads', function(req, res) { 

    var file = req.body.stickie; 
    console.log(file); 

Aber aus irgendeinem Grund stickie.Body scheint nicht entlang geführt werden ... Hier ist, was auf dem Server protokolliert wird:

Fühlt sich wie im nahen aber warum nicht Körper auftauchen?

Antwort

0
//node.js 
app.post('/upload_file', function(req, res){ 
    var file = req.file; 
    res.end(); 
}); 

$(document).ready(function(){ 
 
    $('#input').change(function(e) { 
 
     var files = e.target.files; 
 

 
     $.each(files, function(index, file) { 
 
    \t var name = file.name; 
 
    \t var ext = file_extension(name).toLowerCase(); 
 
    \t var size = file.size; 
 
    \t var type = file.type; 
 

 
    \t var fr = new FileReader(); 
 
    \t fr.readAsDataURL(file); 
 
     fr.onload = function(){ 
 
    \t \t var new_file = {}; 
 
    \t \t new_file.name = name; 
 
    \t \t new_file.size = size; 
 
    \t \t new_file.type = type; 
 
    \t \t new_file.content =fr.result; \t 
 
      
 
      send_file(new_file); 
 
    \t } 
 
     }); 
 
    }); 
 
}) 
 
function send_file(file){ 
 
    var url_server = "your_url/upload_file"; 
 
    $.ajax({ 
 
\t \t type : "POST", 
 
\t \t url : url_server, 
 
\t \t dataType : "json", 
 
\t \t async : true, 
 
\t \t data : ({ 
 
\t \t \t file : file 
 
\t \t }), 
 
\t \t success : function (data) { 
 

 
\t \t }, 
 
\t \t error : function (request, status, error) { 
 
\t \t \t console.log(request); 
 
\t \t } 
 
\t }); 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

Vielen Dank für die Beantwortung, aber ich sehe nicht, wie das ist meine Datei geht zum Knoten .. – eggman

Verwandte Themen