如何将服务器端文件插入图像、fs.files 和 fs.chunks -GridFS (Ostrio/files)
Posted
技术标签:
【中文标题】如何将服务器端文件插入图像、fs.files 和 fs.chunks -GridFS (Ostrio/files)【英文标题】:How to insert a file, server-side, into images, fs.files and fs.chunks -GridFS (Ostrio/files) 【发布时间】:2018-12-28 15:15:11 【问题描述】:我在服务器端使用 Ostrio/files 也称为流星文件(来自 VeliovGroup 或keenethics)将文件插入到 db.images、db.fs.files 和 db.fs.chunks。我的代码只设法在 db.images 中插入一条记录,而在 fs.files 和 fs.chunks 上没有任何内容。我的代码如下:
Images.write(this.bodyParams.file,
fileName: 'SignUpTermsAndConditions_' + this.bodyParams.name,
fielId: 'abc123myId', //optional
type: 'application/vnd.oasis.opendocument.text',
meta: owner: this.userId,createdAt: new Date()
, function (error, fileRef)
if (error)
throw error;
else
console.log(fileRef.name + ' is successfully saved to FS. _id: ' + fileRef._id);
);
我可以使用以下代码将来自客户端的文件插入 db.images、db.fs.files 和 db.fs.chunks:
Images.insert(
file: file, // where var file = e.currentTarget.files[0];
fileName: fileName + e.currentTarget.files[0].name,
onStart: function ()
,
onUploaded: function (error, fileObj)
if (error)
alert('Error during upload: ' + error);
else
,
streams: 'dynamic',
chunkSize: 'dynamic'
);
上面第一个 sn-p 的服务器代码不能正常工作或按预期工作。请帮助。
关于信息:我如何设置我的 gridFS this link。我的 Images.write 按照我上面的第二个代码 sn-p 是按照中的代码 this link。简而言之,我正在关注文档,但我的服务器 Images.write 没有按预期工作。请帮忙!
【问题讨论】:
【参考方案1】:我找到了我的问题的答案。我将第四个参数设置为 true,即proceedAfterUpload=true,并将记录插入到 db.fs.files 和 db.fs.chunks 中。这是根据write method documentation,虽然有点模糊。这是修改后的代码:
Images.write(this.bodyParams.file,
fileName: 'SignUpTermsAndConditions_' + this.bodyParams.name,
fielId: 'abc123myId', //optional
type: 'application/vnd.oasis.opendocument.text',
meta: owner: this.userId,createdAt: new Date()
, function (error, fileRef)
if (error)
throw error;
else
console.log(fileRef.name + ' is successfully saved to FS. _id: ' + fileRef._id);
,proceedAfterUpload=true);
就是这样。
PS:确保 this.bodyParams.file 是一个缓冲区,以便插入的文件不会损坏 - 感谢@dr.dimitru 建议我插入缓冲区。
【讨论】:
以上是关于如何将服务器端文件插入图像、fs.files 和 fs.chunks -GridFS (Ostrio/files)的主要内容,如果未能解决你的问题,请参考以下文章