【发布时间】:2019-05-29 13:42:43
【问题描述】:
我正在争取下载直接流式传输到 GCS 而不保存到文件系统,请参见下面的 sn-p。
const { Storage } = require('@google-cloud/storage');
const http = require('http');
const storage = new Storage();
const fs = require("fs");
const bucketName = 'BUCKETNAMEHERE';
const blobName = 'image.jpg';
const bucket = storage.bucket(bucketName);
const blob = bucket.file(blobName);
const streamDownload = () => {
http.get("http://i3.ytimg.com/vi/J---aiyznGQ/mqdefault.jpg")
.pipe(blob.createWriteStream({
metadata: {
contentType: 'image/jpg'
}
}))
.on("error", (err) => {
console.error(`error occurred`);
})
.on('finish', () => {
console.info(`success`);
});
};
永远不会触发完成。没有任何输出。 我可以毫无问题地将 http.get 流式传输到本地文件,所以这部分似乎没问题。
同样有效的是从本地文件系统流式传输到 GCS,如下所示:
const streamFs = () => {
fs.createReadStream('/path/to/mqdefault.jpg')
.pipe(blob.createWriteStream({
metadata: {
contentType: 'image/jpg'
}
}))
.on("error", (err) => {
console.error(`error occurred`);
})
.on('finish', () => {
console.info(`success`);
});
};
第二个 sn-p 记录“成功”并且文件存在于存储桶中。
http.get 和 fs.createReadStream 都创建一个读取流。
我在这里做错了什么?
【问题讨论】:
标签: node.js google-cloud-platform google-cloud-storage