2015-12-02 100 views
1

我有這需要從客戶端郵差得到一些壓縮文件,在我的文件系統將其解壓縮到一個文件夾中的節點應用程序解壓縮zip,進出口使用表達我做了以下哪些沒有工作,如何從客戶端節點

我在這裏錯過了什麼?

我已經創建了示例節點應用程序來模擬問題。

var express = require('express'); 
var upload = require('multer')({ dest: 'uploads/' }); 
var admZip = require('adm-zip'); 
var app = express(); 

app.post('/',upload.single('file'),function(req,res){ 
    debugger; 
    var zip = new admZip(req.file); 
    zip.extractAllTo("C://TestFolder//TestPathtoExtract", true); 
    res.send("unzip"); 

}); 

var server = app.listen(3001,function(){ 
    var host = server.address().address; 
    var port = server.address().port; 
    console.log('Example app listening at http://%s:%s',host,port); 
}) 

這是我如何使用它的IM郵遞員

enter image description here

如果有其他的方式與不同的開源做這可能是偉大的! 我用 https://github.com/cthackers/adm-zip

它可以改變任何其他庫

我也覺得這LIB,但不知道如何與用它表達 https://www.npmjs.com/package/decompress-zip

謝謝!

+0

你的代碼有什麼問題? –

+0

@Michelem - \t 它不工作我沒有得到該文件中的請求(表達),並沒有保存,任何想法或其他解決方案,可以幫助嗎? –

+0

@Michelem - 你可以測試我的代碼爲 - 只是創建服務器js和粘貼conde並運行它並使用郵遞員發送一個zip文件 –

回答

1

這是在建立我爲Postman,首先這是我的form-data身體

form

現在,在我離開的空白試圖設置後的頭multipart/form-data手動和完全失敗,所以在這裏沒有標題。

headers

在這裏,我做了一對console.logreq.headers之一的Postman務必發送的req.file

file

multipart/form-data和另一個和幸福的輸出似乎要被罰款

enter image description here

編輯:的代碼。

var express = require('express'); 
var upload = require('multer')({ 
    dest: 'uploads/' 
}); 
var admZip = require('adm-zip'); 
var app = express(); 

app.post('/', upload.single('file'), function(req, res) { 
    console.log('%c > req.headers test.js [9] <=================================', 'color:blue;', req.headers); 
    debugger; 
    console.log('%c > req.file test.js [10] <=================================', 'color:blue;', req.file); 
    //instead of just req.file I use req.file.path as admzip needs the actual file path 
    var zip = new admZip(req.file.path); 
    zip.extractAllTo("/Users/myuser/Desktop/ext", true); 
    res.send("unzip"); 

}); 

var server = app.listen(3001, function() { 
    var host = server.address().address; 
    var port = server.address().port; 
    console.log('Example app listening at http://%s:%s', host, port); 
}); 
+0

感謝1+支持!兩件事1。你看到你提供的zip文件是從你的c文件夾中提取的嗎? 2.代碼是否與我在問題中提供的代碼完全相同? 3.你在windows上工作(我問它,因爲我需要一些提示,這很奇怪,爲什麼它不適合我) –

+0

0.不客氣! :) 1.確實文件得到提取 2.我只是改變了什麼@HireS。指出'req.file.path'(和我不運行Windows以及解壓路徑) 3.不是真的,我使用OSX –

+0

能否請您也發佈您的代碼?你可以請精讀爲什麼你改變「我剛剛改變了什麼@HireS,指出了req.file.path」謝謝! –

1

您需要傳遞文件名作爲參數。

使用req.file.path

var zip = new admZip(req.file.path); 
+0

你的意思是我的情況它應該是req.test2.zip? –

+0

當我使用req.file.path我有錯誤無法讀取undfiend的屬性路徑... –

+0

只需粘貼以上代碼,如果你得到的錯誤與那麼,請告訴我登錄的console.log(req.file)的; –