如何允许 fs 和 multer 在 AWS EC2 上写入文件

Posted

技术标签:

【中文标题】如何允许 fs 和 multer 在 AWS EC2 上写入文件【英文标题】:How to allow fs and multer to write files on AWS EC2 【发布时间】:2017-06-04 22:58:36 【问题描述】:

我是编程新手,最近完成了一个部署在 AWS EC2 上的完整 MEAN 堆栈项目。

项目代码: https://github.com/Cryfoo/13

部署在:http://35.166.172.216/

在服务器端,它使用 fs.writeFile 在每次游戏后保存游戏日志。

// Codes from server/config/game.js @ lines 1361~1364
var filename = 10000 + roomNum;
filename = filename + "_" + endTime;
fs.writeFile("server/logs/" + filename + ".txt", variables[roomNum].logs, function(err) );

在客户端,它向服务器发送 http 请求,并使用 multer 上传用户的个人资料图片。

// Codes from server/controllers/user.js @ lines 3~12
var storage = multer.diskStorage(
    destination: function (req, file, callback) 
        callback(null, "./client/static/profile");
    ,
    filename: function(req, file, callback) 
        callback(null, file.originalname);
    
);
var upload = multer(storage: storage, limits: fileSize: 5000000).single("profile");

它在我的笔记本电脑上本地运行良好,但这两个功能在 EC2 上不起作用。我假设问题与允许写入文件的权限有关。如何允许 fs 和 multer 在 EC2 中写入文件?

我在这个项目期间对所有问题进行了大量搜索,并在***和google上找到了解决方案,但是对于这个问题我无法弄清楚。如果我不够具体,我深表歉意(第一次在这里发布问题)。不过提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

如果文件夹的权限有问题,则只需更改它们

sudo chmod a+x -R server/logs

编辑:您可能需要使用 sudo 运行命令

【讨论】:

以上是关于如何允许 fs 和 multer 在 AWS EC2 上写入文件的主要内容,如果未能解决你的问题,请参考以下文章

AWS EC2:允许特定用户运行特定命令

如何连接nodejs sequelize aws rds mysql数据库和ec2实例

AWS仅允许来自S3的EC2流量

AWS 仅允许用户访问弹性 beanstalk 实例和存储

使用 fs 在 multer 中重命名上传的图像

允许第三方用户将文件上传到您的 AWS S3 fs [关闭]