2017-09-15 97 views
1

我從前端客戶端文件發送,在服務器端我有這樣的事情:創建文件

{ name: 'CV-FILIPECOSTA.pdf', 
    data: <Buffer 25 50 44 46 2d 31 2e 35 0d 25 e2 e3 cf d3 0d 0a 31 20 30 20 6f 62 6a 0d 3c 3c 2f 4d 65 74 61 64 61 74 61 20 32 20 30 20 52 2f 4f 43 50 72 6f 70 65 72 ... >, 
    encoding: '7bit', 
    mimetype: 'application/pdf', 
    mv: [Function: mv] } 

我需要的是也許基於該緩衝區建立檔案那是在那裏,我該怎麼做呢?我已經搜索了很多,並沒有找到任何解決方案。

這是我試過到目前爲止:

router.post('/upload', function(req, res, next) { 
    if(!req.files) { 
    return res.status(400).send("No Files were uploaded"); 
    } 
    var curriculum = req.files.curriculum; 
    console.log(curriculum); 
    curriculum.mv('../files/' + curriculum.name, function(err) { 
    if (err){ 
     return res.status(500).send(err);  
    } 
    res.send('File uploaded!'); 
    }); 
}); 

回答

3

你可以使用Buffer可用NodeJS

let buf = Buffer.from('this is a test'); 
// buf equals <Buffer 74 68 69 73 20 69 73 20 61 20 74 65 73 74> 

let str = Buffer.from(buf).toString(); 
// Gives back "this is a test" 

Encoding也可以在重載from法規定。

const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex'); 
// This tells that the first argument is encoded as a hexadecimal string 

let str = buf2.toString(); 
// Gives back the readable english string 
// which resolves to "this is a tést" 

你有可讀格式提供數據後,您可以使用該的NodeJS模塊fs存儲它。

fs.writeFile('myFile.txt', "the contents of the file", (err) => { 
    if(!err) console.log('Data written'); 
}); 

因此,緩衝的輸入轉換爲字符串後,您需要將字符串傳遞到writeFile方法。您可以檢查fs模塊的文檔。它會幫助你更好地理解事物。

+0

謝謝,但我不明白我如何將它傳遞給fs,因此它可以創建文件,基本上我知道fs模塊是如何工作的,但是可以傳遞字符串並創建文件? –

+0

你能舉個簡單的例子嗎? –

+0

@costacosta使用'writeFile'方法進行更新。請讓我知道這可不可以幫你。 –