它不会将任何内容保存到我指定的destination
文件夹中。
我尝试了{storage:storage}
而不是{dest: 'storage/'}
,但它也不工作。图像数据实际上被发送到服务器作为其控制台记录。并且所指定的dest
i被默认创建但保持为空。
const express = require('express');
const app = express();
const multer = require('multer');
let storage = multer.diskStorage({
destination: '/public/my-uploads',
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now())
}
});
const upload = multer({dest:'storage/'}).single('file');
app.post('/upload', upload, (req , res) => {
console.log(req.files) // this does log the uploaded image data.
})
***** EDIT ******
HTML
<form onSubmit={this.upload} enctype='multipart/form-data'>
<input type='file' name='image' />
<input type='submit' value='upload' />
</form>
JS
upload(e){
e.preventDefault();
const file = e.target[0].files[0];
console.log(file)
const fm = new FormData();
fm.append('file', file);
console.log(fm)
axios.post('/upload', fm);
}
POSTMAN
6条答案
按热度按时间gzszwxb41#
尝试捕获我自己调用中间件的错误:
另外,将存储更改为:
iyfamqjs2#
已经有一段时间了,问题是我根本没有使用multer中间件,所以处理图像的回调代码从未执行过。当时我不太了解快递是怎么运作的。
polkgigr3#
看起来你没有使用存储变量,而是使用了一个目标键的函数,正如文档中所写的那样,你还需要在名为
field
的输入字段中传递你的文件,否则multer无法存储文件,在代码的同一级别上创建一个存储文件夹:1dkrff034#
...single('file')
中的“single”的名称必须与输入(包含文件)<input type="file" name='image' />
中的名称匹配,但在您的示例中却不是这样。将multiter-part更改为
...single('image')
-与输入name='image'
相同idv4meu85#
尝试将此文件存储用于在本地保存图像
bgibtngc6#
您需要先创建文件夹/public/my-uploads,然后才能保存文件。我现在正在学习nodejs,并面临这个问题。