Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 穆特';存储';选项在';目的地';有一个_Node.js_Nuxt.js_Multer - Fatal编程技术网

Node.js 穆特';存储';选项在';目的地';有一个

Node.js 穆特';存储';选项在';目的地';有一个,node.js,nuxt.js,multer,Node.js,Nuxt.js,Multer,我正在使用Multer上传和存储文件。如果我使用dest选项,文件上传到我的/uploads文件夹不会有问题。虽然这样做有效,但它正在保存上载,如2eb3f1a6def453f7a461c5de353b06f8,因此我想使用存储选项,但由于某些原因,这不起作用,或者我和文件上载(登录控制台),但不会保存到文件夹 我尝试了几种不同的方法来实现这一点,但都没有成功。有人能指出可能的错误吗 { fieldname: 'attachments', originalname: 'myFil

我正在使用Multer上传和存储文件。如果我使用
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
};