【发布时间】:2018-04-29 22:15:56
【问题描述】:
在尝试通过 Google Cloud Function 将大文件 (>50MB) 上传到 Google Cloud Storage 时,我遇到了这些异常,具体取决于我设置的选项:
- 在设置请求选项“永远:假”时,我得到:错误:套接字挂断
- 在设置请求选项 'resumable: true' 时,我得到:错误:写入 ECONNRESET
- 在设置请求选项 'resumable: false' 时,我得到:错误:ESOCKETTIMEDOUT with resumable: false
这是我使用的代码:
function uploadFile(bucketName, filename, data) {
console.log("Starting uploading blob...");
const Storage = require('@google-cloud/storage');
console.log("Creating client...");
const storage = new Storage();
storage.interceptors.push({
request: function(reqOpts) {
reqOpts.forever = false;
return reqOpts
}
});
console.log("Getting bucket " + bucketName + "...");
const bucket = storage.bucket(bucketName);
console.log("Creating file " + filename + "...");
const file = bucket.file(filename);
console.log("Creating write stream...");
var writeStream = file.createWriteStream({
metadata: {
contentType: 'plain/text'
},
resumable: false
});
writeStream.on('error', function(e) { console.error("An error occurred : " + e); });
writeStream.on('finish', function() { console.log("Success"); });
console.log("Initializing Streaming...");
var bufferStream = new stream.PassThrough();
bufferStream.end(data);
bufferStream.pipe(writeStream);
}
我有什么遗漏吗?
【问题讨论】:
-
您运行的是哪个版本?我在
1.2.1上遇到同样的错误。 -
我使用的是@google-cloud/storage 1.4.0。我通过使用库“request”而不是“request-promise”解决了这个问题,效果很好!
标签: node.js sockets file-upload google-cloud-storage google-cloud-functions