ZEIT服务器无法读取Multer目标文件

时间:2019-06-03 14:29:20

标签: javascript node.js hosting multer zeit-now

我收到以下错误:no such as file or directory public/uploads/bae1774e-d6dc-454b-ba63-a4c8c53d3053.png,当我使用通过multer托管的ZEIT将图像上传到服务器(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);
    }
  })
};
  

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

now.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
  }
}

源代码视图:

enter image description here

这意味着公开目录已出现

那么,为什么在托管Node js时出现提示问题? ZEIT now配置中缺少某些内容或与我的代码相关的内容?

1 个答案:

答案 0 :(得分:1)

您似乎正在尝试将文件上传到您的应用中,并以Lambda的形式在Zeit上运行。

Zeit在AWS Lambda之上工作。 AWS Lambda(以及现在的Lambdas)在执行期间仅向文件系统提供非常有限的写入,但是执行完成后所有更改都将丢失。 Lambda执行之间没有持久性。

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