使用缓冲区将图像上传到Google Cloud Platform会创建空白图像

时间:2018-08-02 19:05:10

标签: image file-upload google-cloud-platform pipe buffer

我确实使用缓冲区成功地将某些内容(image.jpg)上传到了Google云平台。但是,当我单击指向图像本身的链接时,它会导致空白屏幕,中间有一个小的白色正方形,我认为这是没有图像的占位符。

    const buffer = file.buffer.toString('utf-8');
    const uploadFile = bucket.file(file.name);

    const stream = uploadFile.createWriteStream({
      metadata: { contentType: file.mimeType }
    });

    stream.pipe(stream)
    .on('error', err => console.log('upload failed', err))
    .on('finish', () => console.log('upload success', file.name))
    .end(new Buffer(buffer, 'binary'));

    // console.log(`File uploaded succesfully (${file})`);
    return // the full url which is does successfully

我不知道为什么上传后缓冲区没有被解析回图像?就像字符串作为文件上传一样,这毫无意义。

我也尝试过该版本,其结果相同。

return await bucket
.file(file.urlName)
.save(buffer, {
  metadata: { contentType: file.mime }
})
.then(res => {
  console.log('success', res);
  return this.getPublicUrl(file.urlName);
})
.catch(err => console.log('error', err));

1 个答案:

答案 0 :(得分:1)

此版本有效

return await bucket
.file(file.urlName)
.save(file.buffer, {
  metadata: { contentType: file.mime }
})
.then(res => {
  console.log('success', res);
  return this.getPublicUrl(file.urlName);
})
.catch(err => console.log('error', err));

与其他示例中的要求不同,提供了缓冲区没有被字符串化的条件。