无法通过管道直接从URL将文件完全上传到Google Cloud Storage存储桶中

时间:2019-08-10 09:08:45

标签: node.js pipe google-cloud-storage firebase-storage

我正在尝试直接从url上传文件到Google Firebase存储上。我已经回顾了许多方法,最后使用了以下解决方案:

const bucket = storage.bucket(bucketName);
const file = bucket.file(destPath + fileName);
return new Promise((resolve, reject) => {
  try {
    https.get(url, data => {
      if (data && data.statusCode === 200) {
        data.pipe(file.createWriteStream());
        data.on("error", error => {
          reject(error);
        });
        data.on("end", () => {
          resolve(fileName);
        });
      } else {
        const err = new Error(data.statusMessage);
        err.code = data.statusCode;
        data.removeAllListeners();
        reject(err);
      }
      data.on("close", () => {
        console.log("connection closed");
      });
    });
  } catch (err) {
    reject(err);
  }
});

它对于许多文件(图像,视频,音乐,文档)都可以正常工作,但是在一个视频文件中出现问题,该视频文件显示已成功在存储桶中上传,但未完全上传(上传了损坏的文件)。同样也没有任何问题。如何确定我的所有文件都将完全上传。可能有很多损坏的文件没有完全上传。

还有其他直接上传到存储桶的方法吗?请同样提供帮助。

1 个答案:

答案 0 :(得分:0)

您是否尝试过遵循本文档? CreateWriteStream。那里有一个有关如何上传文件的示例。另外,请看另一个问题,它与您的Upload a file from URL to Storage有点相似,我认为它可能会有用。