【问题标题】:Getting mkdir error while using uploading image using multer使用 multer 上传图像时出现 mkdir 错误
【发布时间】:2019-06-11 18:56:59
【问题描述】:

在上传文件和创建路径时,我正在创建一个文件夹错误:-

Error: EACCES: permission denied, mkdir '/opt/bitnami/apps/NodeJS-Login/uploads'
    at Object.fs.mkdirSync (fs.js:885:18)
    at Function.sync (/opt/bitnami/apps/NodeJS-Login/node_modules/mkdirp/index.js:71:13)
    at new DiskStorage (/opt/bitnami/apps/NodeJS-Login/node_modules/multer/storage/disk.js:21:12)
    at module.exports (/opt/bitnami/apps/NodeJS-Login/node_modules/multer/storage/disk.js:65:10)
    at new Multer (/opt/bitnami/apps/NodeJS-Login/node_modules/multer/index.js:15:20)

我在 AWS 上使用 bitnami 来托管我的 MEAN 应用程序。

在我的主 server.js 文件中,我添加了这个:-

app.use(multer({ dest: './uploads/',
 rename: function (fieldname, filename) {
   return filename;
 },
}));

关于模式模型:-

companyLogo: {
                data: Buffer,
                type: String
                }

controller 中用于路由:-

admin.companyLogo = fs.readFileSync(req.files.comLogo.path)
admin.companyLogo.type = 'image/png';

图片上传应该怎么做?我还必须在 form-data 中传递其他键值而不是 raw 吗?

【问题讨论】:

  • 你应该修复 EACCES 权限错误。
  • @TGrif 这个错误是关于什么的?我正在寻找,但所有问题都与本地项目有关。我不明白为什么它不在托管服务器上创建文件夹

标签: node.js mongoose image-uploading mongoose-schema multer


【解决方案1】:

/opt 默认是写保护的,所以这里有可能的修复

1) 更改 /opt 的权限并允许用户在此文件夹中写入(不推荐

2) 使用超级用户运行 server.js,这样你就可以完全控制目录,它可以让你做任何事情(不推荐

3) 只需将路径更改为用户有权写入的位置(推荐

【讨论】:

  • 这已被托管。那么我应该在哪里给用户写权限
  • 在 bitnami 控制台上使用 chmod -R 777 文件夹路径。但正如我所提到的,不建议这样做。如果您只使用选项 3 会更简单更好
  • 如果项目托管在 bitnami 中,那么访问上传文件的文件夹应该只有我猜。
  • 真正的超级用户,不是每个用户,其他用户只能读,不能写,所以不能上传
  • 但其他用户是次要的。当我试图只运行服务器时,错误就来了。谁是这里的超级用户?
猜你喜欢
  • 2019-03-31
  • 2020-10-26
  • 2018-09-26
  • 1970-01-01
  • 2021-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多