node.js - Multer 不会以任何方式将图像保存在磁盘上
问题描述
它根本不会将任何内容保存到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
解决方案
似乎您没有使用存储变量并使用目标键的函数,如文档中所述,您还需要在名为的输入字段中传递文件,field
否则 multer 无法存储文件,在与代码相同的级别:
const http = require('http')
const port = 3000
const express = require('express');
const app = express();
const multer = require('multer');
const server = http.createServer(app)
let storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './storage')
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now())
}
});
const upload = multer({ storage }).single('file');
app.post('/upload', upload, (req, res) => {
console.log(req.files) // this does log the uploaded image data.
})
// bind the server on port
server.listen(port, (err) => {
if (err) {
return console.log('something bad happened', err)
}
console.log(`server is listening on ${port}`)
})
推荐阅读
- spring-kafka - Spring-kafka 支持只执行一次 SeekToTimestamp
- spring-boot - Spring kotlin - 如何将内部类注入公共类
- python - 忽略 Python CSV 读取上的特定分隔符场景
- pandas - 如何在我的 vscode 项目中修复熊猫代码的错误 pylance 警告?
- firebase - Flutter Web:初始化firebase应用程序时需要刷新
- python - Lambda 实现事务
- java - 使用 Spring Security 的自定义自动配置不起作用
- sql - 雪花将 Int 转换为 Decimal
- python - 使用 Pytest 在烧瓶应用程序中对已初始化的 redis 连接进行monkeypatch
- javascript - Webstorm:无法运行简单的 nestjs 应用程序。错误:对装饰器的实验性支持是一项可能在未来版本中更改的功能