在我的Node express应用程序中使用multer始终未定义req.file

时间:2017-03-23 04:59:26

标签: node.js express amazon-s3

我尝试在multer-s3的支持下使用multer将图像文件从客户端上传到我的AWS S3存储服务器。但是,我一直在为req.file调用获取未定义的结果。我一直在谷歌搜索并检查所有可能的原因我的问题,到目前为止没有运气。希望有人可以帮助我。提前谢谢。

客户端HTML代码:

Math.abs()

服务器端代码:

<form method="post" enctype="multipart/form-data" action="/create">
    <input type="text" name="name" />
    <input type="text" name="topic" />
    <input type="file" name="image" />
    <input type="submit" value="Upload" />
</form>

我尝试了以下内容:

  1. 删除了&#39; body-parser&#39;并使用&#39; multer&#39;只有,然后更糟糕的结果(req.body和req.file都是未定义的)。使用body-parser,至少我可以保证req.body正在工作
  2. 为了简化原因,我从客户端删除了所有文本字段输入,只保留文件上传选项以确保我只传输文件数据,仍然为req.file返回undefined(multer根本不工作)< / LI>
  3. 我还读到了&#34;注意req.body可能尚未完全填充的可能性。这取决于客户端将字段和文件传输到服务器的顺序。&#34;就我而言,我没有收到文件,所以现在对我来说并不重要。
  4. 仅在没有multer-s3的情况下使用multer,并尝试upload.array而不是upload.single,仍然没有运气(multer-s3建立在multer之上,所以我不认为它与它有任何关系我目前的问题,但只是试一试)
  5. 跳过AWS S3并将其存储在本地路径中,仍然是未定义的结果

1 个答案:

答案 0 :(得分:0)

经过长时间的努力,在m and和busboy之间切换,没有任何作用。突然之间我注意到我的表格实际上是使用了一种聚合物元素&#39; is =&#34;铁形式&#34;&#39;我的错误没有在我原来的帖子中输入,如下所示。删除后,我的文件上传工作正在进行中 - 我确信它也适用于busboy。

<form is="iron-form" method="post" enctype="multipart/form-data" action="/create"> 

过去,聚合物元素总是给我带来麻烦。但是不要误解我的意思,这是一个很棒的项目,有很多很棒的东西可以设计你的页面。但是你需要真正理解如何使用这些元素来利用它们。就我而言,我从我的课程中吸取教训,并希望与你分享。