javascript - ZEIT 服务器无法读取 Multer 目标文件
问题描述
我收到以下错误: 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 配置中缺少某些内容还是与我的代码相关的内容?
解决方案
看起来您正在尝试将文件上传到您的应用程序,在 Zeit 上作为 lambda 运行。
Zeit 在 AWS Lambda 之上运行。AWS Lambda 以及 Now lambdas 在执行期间仅提供对文件系统的非常有限的写入,但执行完成后任何更改都将丢失。lambda 执行之间没有持久性。
相反,您需要将文件写入某种持久存储,例如 AWS S3。这是您如何执行此操作的示例:https ://github.com/zishon89us/node-cheat/tree/master/aws/express_multer_s3
推荐阅读
- nativescript - 在无限滚动的繁重列表负载上崩溃 Nativescript 应用程序
- android - 如何将数据从 BroadcastReceiver 传递到另一个类?
- reactjs - 如何修复在反应中显示天气图标的错误
- linq - 日期的 IN 子句 LinQ C#
- javascript - 在 Conversejs 中添加一个新的 SCSS 文件
- maven - 阻止 maven 依赖进一步继承给孩子
- excel - 十六进制转十进制在excel中
- php - Laravel 显示来自数据库表 get() 和 first() 方法的数据
- php - 解析存储为字符串的 PHP 数组并将项目连接到 Power Query 中的字符串
- php - 处理大文件上传并发送到 API