【问题标题】:Google Cloud Storage Multipart Image upload (NodeJS)谷歌云存储多部分图像上传(NodeJS)
【发布时间】:2022-01-09 19:05:50
【问题描述】:

我正在将应用程序从 Azure 存储迁移到 Google 云存储。

我的上传API如下:

let uploadFile = async (req, res) => {
try {
  var form = new multiparty.Form();
  form.on("part", async function (part) {
    if (part.filename) {
      let filnam = part.filename.replace(/\s/g, "");
      var size = part.byteCount - part.byteOffset;
      container = containerName(part.headers["content-type"]);

      blobName = fileName(filnam);

      let fileDetails = await GCSService.uploadFile(
        container,
        part,
        blobName,
        part.headers["content-type"],
        part.filename
      )
      Response.success(res, res, status.HTTP_OK, fileDetails);
    }
  });
  form.parse(req);
  
} catch (err) {
  console.log("Error Uploading File: ", err);
  throw new Error("file upload error");
}

};

使用 Azure 存储,我可以使用 uploadStream 函数直接上传分段,

await blockBlobClient.uploadStream(part, 4 * 1024 * 1024, 20, {
    blobHTTPHeaders: {
      blobContentType: mimetype
    },
    onProgress: (ev) => console.log(ev)
  });
  const blobClient = containerClient.getBlobClient(blobName);

但是当我尝试使用 Google Cloud Storage createWriteStream 进行相同操作时,它会上传文件,但文件是 0 字节。

bucket.file(blobName).createWriteStream({
         resumable: false
    }).on('finish', async () => {});

谁能指出正确的 Google Cloud Storage 实施方向?

谢谢

【问题讨论】:

    标签: node.js google-cloud-platform google-cloud-storage azure-blob-storage


    【解决方案1】:

    尝试使用来自 GCS API reference 的示例:

    fs.createReadStream('/Users/stephen/Photos/birthday-at-the-zoo/panda.jpg')
      .pipe(file.createWriteStream())
      .on('error', function(err) {})
      .on('finish', function() {
        // The file upload is complete.
      });
    

    another Stack thread 中也讨论了类似的问题。

    【讨论】:

      猜你喜欢
      • 2019-08-11
      • 2015-02-28
      • 1970-01-01
      • 2021-11-03
      • 1970-01-01
      • 2018-07-11
      • 1970-01-01
      • 2019-04-08
      • 2018-08-01
      相关资源
      最近更新 更多