通过缓冲区将文件保存到Google Cloud Storage时丢失文件上传

时间:2018-11-24 13:47:00

标签: javascript node.js stream buffer google-cloud-storage

我尝试通过@ google-cloud / storage包将文件从帖子上传到Google云端存储。我禁用了自动处理功能,因此我将文件读取为Buffer。导致多次读取文件。如我所见,缓冲区大小为64 KB。当我将文件保存到Google Cloud Storage时,文件大小约为64 KB。因此云中的图像丢失了:)

const {Storage} = require('@google-cloud/storage'); 
  const storage = new Storage({
  projectId: myprojectId,
  keyFilename: myPath
});
  const bucket = storage.bucket(projectName);
  const gcsName = `tickets/${fileName}`;
  const file2 = bucket.file(gcsName);
const stream =await  file2.createWriteStream({
    metadata: {
      contentType: file.stream.headers['content-type']
    },
    resumable: true
  });

  stream.on('error', (err) => {
    console.log(err);
  });

  stream.on('finish', () => {
  });
//stream.end(Buffer)
  stream.end(file.stream._readableState.buffer.tail.data);

该代码仅将缓冲区保存一次。我的照片大小在64-128 KB之间,因此应保存多次。

如何解决此问题?

我将nodejs与Adonisjs Web框架一起使用。

0 个答案:

没有答案