【问题标题】:Multer destination file is not readable by ZEIT serverZEIT 服务器无法读取 Multer 目标文件
【发布时间】:2019-10-19 03:06:34
【问题描述】:

我收到以下错误:no such as file or directory public/uploads/bae1774e-d6dc-454b-ba63-a4c8c53d3053.png 当我使用通过 ZEIT 托管的 multer 将图像上传到服务器 (nodejs) 时

const multerMultiple = {
  storage: multer.diskStorage({
    destination: (req, file, callback) => {
      callback(null, "./public/uploads"); // I think the problem here
    },
    filename: (req, file, callback) => {
      const extension = file.mimetype.split("/")[1];
      const name = `${uuid.v4()}.${extension}`;
      callback(null, name);
    }
  })
};

上面的配置在本地完美运行,而node js在本地运行

现在.json

{
  "name": "application-name",
  "version": 2,
  "builds": [
    { "src": "index.js", "use": "@now/node-server" },
    { "src": "./public/uploads", "use": "@now/static" }
  ],
  "routes": [{ "src": "/.*", "dest": "/index.js" }],
  "env": {
    .../ env here
  }
}

源视图:

这意味着显示公共目录

那么知道为什么我在托管节点 js 时遇到了这个问题吗? ZEIT now 配置中缺少某些内容还是与我的代码相关的内容?

【问题讨论】:

  • 错误是什么?您只包含了文件的路径。

标签: javascript node.js hosting multer vercel


【解决方案1】:

您似乎正在尝试将文件上传到您的应用,在 Zeit 上作为 lambda 运行。

Zeit 在 AWS Lambda 之上运行。 AWS Lambda 以及 Now lambdas 在执行期间仅提供对文件系统的非常有限的写入,但执行完成后任何更改都将丢失。 lambda 执行之间没有持久性。

相反,您需要将文件写入某种持久存储,例如 AWS S3。以下是您可以如何执行此操作的示例:https://github.com/zishon89us/node-cheat/tree/master/aws/express_multer_s3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 2021-03-29
    • 1970-01-01
    相关资源
    最近更新 更多