【问题标题】:using Sails.js with skipper-gridfs to upload images to MongoDB使用 Sails.js 和 skipper-gridfs 将图像上传到 MongoDB
【发布时间】:2015-03-21 21:22:03
【问题描述】:

文档页面似乎无法在 skipper-gridfs github 页面上运行,因此关于此处所需内容的信息很少。

在这段代码中..

req.file('avatar')
 .upload({
  adapter: require('skipper-gridfs'),
  uri:'mongodb://jimmy@j1mtr0n1xx@mongo.jimmy.com:27017/coolapp.avatar_uploads'
}, function whenDone(err, uploadedFiles) {
  if (err) return res.negotiate(err);
  else return res.ok({
    files: uploadedFiles,
    textParams: req.params.all()
  });
});

req.file('avatar') 指的是什么?例如,我有一个从 API 下载图像的函数,我想将它保存到 MongoDB GridFS。我只是不确定我应该在什么时候传递它。

【问题讨论】:

标签: node.js mongodb sails.js


【解决方案1】:

'avatar' 是指包含文件的表单字段名称。例如:

<input type="file" name="avatar"/>

【讨论】:

  • 如果我以编程方式发帖怎么办?我发布到这个 url localhost:1337/uploadimg?file=labels 所以对于 req.file 我选择使用标签。这是正确的用法吗?
  • 这不是正确的用法,因为该文件未在查询字符串中编码。该文件被编码到您的请求正文中。我以编程方式上传文件,我使用的库允许我指定字段名。您要查找的是请求正文中的字段名。
  • 我正在使用请求框架来帮助解决这个问题。它从我指定的 url 获取我的图像,然后我通过管道将其发送到运行将图像保存到 gridfs 的其余 url 的 request.post。这是sn-p。 .pipe(request.post('localhost:1337/uploadimg?file=labels',function(error, response, body)
  • 你仍然需要知道request.pipe创建的请求的表单字段名称是什么。尝试检查映射到 /uploadimg 的控制器操作上的 req.body。 req.file 是 github.com/balderdashy/skipper 的一部分,而不是 express 或 request 的一部分。
  • 我已经处理了那部分,但是当我现在发布到它时,我看到了这个。我也设置了无限超时。 events.js:85 throw er; // 未处理的“错误”事件 ^ 错误:EMAXBUFFER:上游 (NOOP_label) 在插入接收器之前超时。等待 4500 毫秒后仍未使用。您可以通过更改 maxTimeToBuffer 选项来配置此超时。
【解决方案2】:

'avatar' 是您选择上传的文件的键。它在请求的正文中,具有表单数据类型。

【讨论】:

  • 我很欣赏 skipper-gridfs 和 mongodb 数据库。我们可以用它们构建媒体服务器,而不是将文件保存在后端的文件系统上。因此,它很容易扩展、备份和复制。由于文件保存为块,它还支持视频和音频流。
猜你喜欢
  • 2015-03-07
  • 1970-01-01
  • 1970-01-01
  • 2012-03-22
  • 1970-01-01
  • 2020-03-20
  • 1970-01-01
  • 2018-09-26
  • 2020-12-07
相关资源
最近更新 更多