我确实使用缓冲区成功地将某些内容(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));
答案 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));
与其他示例中的要求不同,提供了缓冲区没有被字符串化的条件。