如何将服务器端文件插入图像、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)的主要内容,如果未能解决你的问题,请参考以下文章

Node.js如何同步读取文件内容?

使用 GridFs 从 mongoDB 读取和显示图像

如何将存储在 Postgres 中的图像的图像 URL 插入 Spring Boot 模型

如何使用codeigniter在数据库中插入图像

如何插入带有页码、文件路径和图像的页脚?

使用 InsertRows(at: with) 将 UIImage 插入表中