2016-07-19 126 views
1

我想要「client.js」讀取文件,並使用HTTP POST通過「server.js」將文件上傳到某個文件夾。當文件大小很小(1kb)時,它可以工作。但是當文件大小更大(大約100kb)時,它沒有效果。沒有錯誤,但存儲的圖像的尺寸小於應有的尺寸。我不知道爲什麼。請幫忙。nodejs上傳文件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'); 

預先感謝您。

+0

您可以使用[busyboy]( https://www.npmjs.com/package/connect-busboy)上傳文件,我在我的項目中使用它,並在我的應用程序中處理大尺寸的圖像。 –

回答

1

您可以使用multer,即處理multipart/form-data它會自動將文件保存爲您和填充REQ變量中間件: req.file //access file info。它有很多抽象這種工作的功能。您可以定義文件,過濾文件和許多其他設施的尺寸,我知道multer簡單易用,並與express工程作爲中間件,但我認爲你可以試試這個:

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

謝謝你的評論。正如你所說,我想我應該使用'multer'。但我只是對我的代碼有什麼問題感到好奇。有沒有人可以解釋這個問題? – user6607973