2017-06-02 82 views
0

我有一個Node.js網絡應用程序。在我使用Express的應用程序中。我需要讓用戶上傳圖片。要做到這一點,我已經在線查看了一些示例,但沒有一個能夠滿足我的需求。具體來說,我想獲取上傳的文件,將其保存到本地磁盤,並對其進行一些操作。現在,我有以下幾點:通過Multer在Node.js中上傳文件

const app = this; 
const multer = require('multer') 
const upload = multer({ dest: 'uploads/' }) 

app.post('/picture/upload', upload.single('myPicture'), function(req, res) { 
    console.log('uploaded'); 
    var picture = req.file; 
    console.log(picture); 
    res.send({ id: 1, fileName: 'info', originalName: 'name' }); 
}); 

當我從我的網頁上傳文件時,我看到在控制檯窗口中:

uploaded 
undefined 

當我看着小提琴手,我可以看到圖像正在傳遞給服務器。這就像我沒有正確地「訪問」它。如何在Node中的服務器端獲取上傳的文件?

UPDATE: 根據要求通過應答:

req.headers:

{ host: 'localhost:1337', 
    connection: 'keep-alive', 
    'content-length': '395665', 
    accept: 'application/json, text/plain, */*', 
    origin: 'http://localhost:1337', 
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', 
    'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary[someRandomCharacters]', 
    referer: 'http://localhost:1337/picture', 
    'accept-encoding': 'gzip, deflate, sdch, br', 
    'accept-language': 'en-US,en;q=0.8', 
    cookie: '' 
} 

req.body:

{ myPicture: 'data:image/png;base64,[LONG STRING OF ALPHANUMERIC CHARACTERS]' } 

謝謝!

+0

輸入欄的名字是'picture'? – nrgwsth

+0

也許你需要上傳文件爲'form-data',用'picture ='鍵 –

+0

你的內容類型頭部有multipart/form-data,但是主體中的數據是一個數據uri。您正在上傳文件不正確。 – Musa

回答

0

您可以使用此req.files訪問文件類型輸入。 嘗試console.log(req.files) req.files將返回所有上傳的文件。

+0

在我的情況下,'req.file'和'req.fiiles'都是未定義的。 – user687554