2016-07-19 13 views
1

Ich möchte "client.js" eine Datei lesen und sie über "server.js" mit HTTP POST in einen bestimmten Ordner hochladen. Wenn die Dateigröße klein ist (1 KB), funktioniert es. Aber wenn die Dateigröße größer ist (vielleicht um 100kb), funktioniert es nicht. Es gibt keinen Fehler, aber das gespeicherte Bild ist kleiner als das, was es sein soll. Ich weiß nicht warum. bitte hilfe.nodejs Datei hochladen HTTP POST

1.client.js

var fs = require('fs'); 
var http = require('http'); 

postData = null; 

postData=fs.readFileSync("test.jpg") 

if(postData!=null){ 

var options = { 
    host: 'localhost', 
    port: 10730, 
    method: 'POST' 
}; 

var clientRequest = http.request(options); 
clientRequest.end(postData);} 

2.server.js

var http = require('http'); 
var fs = require('fs'); 

var server = http.createServer((req,res)=>{ 
    req.on('data', (chunk)=>{ 
    fs.writeFile('testcopy.jpg',chunk)}) 
    req.on('end',()=>{ 
    console.log("end") 
})}) 
server.listen(10730,'localhost'); 

Vielen Dank im Voraus.

+0

Sie verwenden können [busyboy] (https://www.npmjs.com/package/connect-busboy), um die Datei hochzuladen, verwende ich es in meinem Projekt und ich handle Bilder von großer Größe in meiner Anwendung. –

Antwort

1

Sie können multer, eine Middleware verwenden, die multipart/form-data die Datei automatisch für Sie Griffe speichern und füllt die erf Variable: req.file //access file info. Es hat viele Funktionen, die diese Art von Arbeit abstrahieren. Sie können Dateigröße, Filter-Dateien und viele andere Einrichtungen definieren, ich weiß, dass multer einfach zu bedienen und arbeitet mit express als Middleware, aber ich glaube, Sie dies versuchen:

var http = require('http'); 

var server = http.createServer((req,res)=>{ 
    upload(req, res, function (err) { 
    if (err) { 
     // An error occurred when uploading 
     return 
    } 
    console.log('end') 
     // Everything went fine 
    }) 
}) 
server.listen(10730,'localhost'); 
+0

Vielen Dank für Ihren Kommentar. Ich denke, ich sollte 'Multer' verwenden, wie du gesagt hast. Aber ich bin nur neugierig geworden, was mit meinem Code nicht stimmt. Gibt es jemanden, der das Problem erklären kann? – user6607973

Verwandte Themen