Node.js 穆特';存储';选项在';目的地';有一个
我正在使用Multer上传和存储文件。如果我使用Node.js 穆特';存储';选项在';目的地';有一个,node.js,nuxt.js,multer,Node.js,Nuxt.js,Multer,我正在使用Multer上传和存储文件。如果我使用dest选项,文件上传到我的/uploads文件夹不会有问题。虽然这样做有效,但它正在保存上载,如2eb3f1a6def453f7a461c5de353b06f8,因此我想使用存储选项,但由于某些原因,这不起作用,或者我和文件上载(登录控制台),但不会保存到文件夹 我尝试了几种不同的方法来实现这一点,但都没有成功。有人能指出可能的错误吗 { fieldname: 'attachments', originalname: 'myFil
dest
选项,文件上传到我的/uploads
文件夹不会有问题。虽然这样做有效,但它正在保存上载,如2eb3f1a6def453f7a461c5de353b06f8
,因此我想使用存储
选项,但由于某些原因,这不起作用,或者我和文件上载(登录控制台),但不会保存到文件夹
我尝试了几种不同的方法来实现这一点,但都没有成功。有人能指出可能的错误吗
{
fieldname: 'attachments',
originalname: 'myFile.pdf',
encoding: '7bit',
mimetype: 'application/pdf',
destination: 'uploads/',
filename: '2eb3f1a6def453f7a461c5de353b06f8',
path: 'uploads/2eb3f1a6def453f7a461c5de353b06f8',
size: 57638
}
用
multer.diskStorage
定义后声明var upload=multer({storage:storage})
足以修复OP的问题。它与Nuxt有什么关系?你在什么地方出错了吗?您是否async
/等待您的查询?我正在构建一个Nuxt站点,NodeJ利用Nuxt的服务器中间件处理文件上传/保存。Nuxt正在将数据提交到我的后端端点/api/uploads
fine。正如我所提到的,Multer使用dest
选项保存文件,但是storage
(我需要使用它不起作用或出于某种原因…我添加的控制台日志也显示了成功消息。没有错误。只是文件没有保存到较旧的版本。为什么调用var upload=Multer({storage:storage})
在声明之前?就像我说的,我已经尝试了一些方法。你可以看到上面的app.post
。将错误的代码集复制到此SO消息中。
const express = require('express');
const app = express();
const multer = require("multer");
const path = require('path');
// const upload = multer({ dest: "uploads/" }); // this works, file saves to /uploads
var upload = multer({ storage: storage }); // this doesnt work/ files dont save to /uploads
// Parse URL-encoded bodies (as sent by HTML forms)
app.use(express.urlencoded());
// Parse JSON bodies (as sent by API clients)
app.use(express.json());
var storage = multer.diskStorage({
destination: function(req, file, cb) {
// cb(null, 'uploads/');
// cb(null, __dirname + '/uploads');
cb(null, './uploads');
},
filename: function (req, file, cb) {
// cb(null , file.originalname);
// cb(null, file.fieldname + '-' + Date.now());
// By default, multer removes file extensions so let's add them back
cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));
}
});
// var upload = multer({ storage: storage });
app.post('/', upload.array('attachments') , (req, res) =>{
try {
res.send(req.files);
console.log('body', req.body);
console.log('files', req.files);
} catch(error) {
console.log(error);
res.send(400);
}
});
module.exports = {
path: '/api/upload',
handler: app
};