Node.js 将文件从Web应用程序上载到EC2 Web服务器

Node.js 将文件从Web应用程序上载到EC2 Web服务器,node.js,amazon-ec2,upload,sails.js,multipartform-data,Node.js,Amazon Ec2,Upload,Sails.js,Multipartform Data,我正在使用Sails.js创建一个简单的应用程序。它的基本功能是创建一个新项目,然后将其保存到数据库并将图像上传到S3 下面是发生的情况: 当我在本地计算机上运行应用程序时,它运行正常。req.body有内容,req.file('item-image')不是空的。 我现在在EC2上运行它,问题是req.body只是一个空对象,但是req.file('item-image')不是空的。我尝试了不同的调试场景,请参见下面的场景: 如果我删除enctype=“multipart/form data”(

我正在使用Sails.js创建一个简单的应用程序。它的基本功能是创建一个新项目,然后将其保存到数据库并将图像上传到S3

下面是发生的情况: 当我在本地计算机上运行应用程序时,它运行正常。req.body有内容,req.file('item-image')不是空的。 我现在在EC2上运行它,问题是req.body只是一个空对象,但是req.file('item-image')不是空的。我尝试了不同的调试场景,请参见下面的场景:

  • 如果我删除enctype=“multipart/form data”(我知道这是文件上传所需要的,只是尝试一下),我会得到我期望的req.body对象,但正如预期的那样,req.file('item-image')是空的

  • 我放回enctype=“multipart/form data”,然后尝试在没有文件的情况下发送请求,得到了预期的req.body对象

  • 我在请求中包含了一个映像,req.body对象是空的,但req.file('item-image')不是空的

  • 最奇怪的是,当我通过邮递员发送我的请求时,所有的行为都和预期的一样。我现在真的迷路了,请参见下面的代码:

    创建事件。ejs
    
    &时代;
    请填写以下表单字段
    名称
    描述
    取消
    拯救
    
    我在这里找到了答案

    显然,sails.js使用skipper,并且对输入的顺序非常敏感。我只是把文件部分放在了末尾,现在它可以工作了


    我只是不明白为什么它可以在我的本地服务器上工作,而不能在我的ec2服务器上工作。

    在启动ec2实例时,您是否将IAM角色附加了S3权限?是的,它有足够的权限上载和访问S3文件