簡體   English   中英

使用 multer 上傳文件無法正常工作(NodeJS)

[英]uploading file using multer is not working fully (NodeJS)

我正在使用 NodeJS express (MVC) 並且我正在嘗試上傳圖像。 我正在嘗試將圖像存儲在上傳文件夾中,但沒有顯示任何內容。 當我 console.log(req.files) 時,我得到以下信息(req.buffer 打印出一長串兩位數和字母)。 我如何獲得它以將圖像保存在文件夾中?

 [ 
   { 
     fieldname: 'file',
     originalname: 'thumbnail.jpg',
     encoding: '7bit',
     mimetype: 'image/jpeg',
     buffer: <Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 00 00 01 00 01 00 00 ff db 00 84 00 09 06 07 0d 0d 10 0e 10 0d 0e 0d 0d 0d 0e 10
 0f 0d 0d 0e 0d 0d 0f  0e 0e 0e ... >,
     size: 1347 
   } 
]

HTML:

<form action="/bars/upload" method = 'post' enctype="multipart/form-data">
   <label for='file'>Upload Image</label>
   <input type="file" name="file" accept="image/*"/>
   <input type="submit" name='submit' value="submit"/>
</form>

節點JS

var multer  = require('multer'); 
var upload = multer({ dest:'../public/uploads/' });

router.post('/bars/upload', function (req, res, next) { 
    console.log(req.files);     
    res.send(req.files); 
});

multer基本上是一個中間件,用於上傳文件或轉換為稍后可以在處理程序中使用的某種格式。 所以,從examples ,你可以在你的情況下這樣做:

var multer = require('multer'); 
var upload = multer({ dest:'../public/uploads/' });

router.post('/bars/upload', upload.single('someFile') ,function (req, res, next) {

    // if you're here, the file should have already been uploaded

    console.log(req.files); 
    console.log(req.body);// {"someParam": "someValue"}
    res.send(req.files); 
});

上傳.html

<form action="/bars/upload" method = 'post' enctype="multipart/form-data">
    <label for='file'>Upload Image</label>
    <input type="file" name="someFile" accept="image/*"/>
    <input type="hidden" name="someParam" value="someValue"/>
    <input type="submit" name='submit' value="submit"/>
</form>

如果這不起作用,您可以使用命令行進行調試,這通常可以幫助我確定是服務器還是客戶端有問題。

curl --form "someFile=@/path/to/file" -X POST http://localhost:3000/bars/upload

添加-I選項以顯示詳細響應。

我有同樣的問題。 我使用 Postman 查詢我的節點應用程序。 問題解決了,當我刪除 http 標頭 Content-Type (它被設置為 urlencoded 形式)。

我在 dest:'../public/uploads/' 中遇到了同樣的問題,只需刪除 ../ 並像這樣寫 dest:'public/uploads/' 就是這樣

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM