首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用node.js为上传到谷歌云存储的文件设置内容类型

如何使用node.js为上传到谷歌云存储的文件设置内容类型
EN

Stack Overflow用户
提问于 2016-08-05 20:53:24
回答 1查看 3.1K关注 0票数 4

我正在编写代码,将使用node-fetch获取的文件上传到Google Cloud Storage中使用gcloud-node的存储桶中。

到目前为止,一切都很正常,但我在找出如何在GCloud上设置文件的Content-Type时遇到了麻烦,否则该文件将以application/octet-stream格式下载。

这是我到目前为止所拥有的代码:

代码语言:javascript
复制
function saveImage(response, destFile) {
  return new Promise((resolve, reject) => {
    if (response.status !== 200) {
      reject(new Error('Bad Response'));
    }

    // How do I set this on the file uploaded to the bucket?
    const contentType = response.headers.get('Content-Type');

    try {
      const file = bucket.file(destFile);
      const writeStream = file.createWriteStream();

      writeStream.on('error', err => {
        reject(err);
      });

      writeStream.on('finish', () => {
        resolve(getPublicUrl(destFile));
      });

      response.body.pipe(writeStream);
    } catch (e) {
      reject(e);
    }
  });
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-05 20:58:06

原来在文件上有一个setMetadata方法,您可以调用它将Content-Type作为参数传递。下面是工作代码的样子:

代码语言:javascript
复制
function saveImage(response, destFile) {
  return new Promise((resolve, reject) => {
    if (response.status !== 200) {
      reject(new Error('Bad Response'));
    }

    const contentType = response.headers.get('Content-Type');
    try {
      const file = bucket.file(destFile);

      const writeStream = file.createWriteStream({
        metadata:{
          contentType: contentType
        }
      });

      writeStream.on('error', err => {
        reject(err);
      });

      writeStream.on('finish', () => {
        resolve(getPublicUrl(destFile));
      });

      response.body.pipe(writeStream);
    } catch (e) {
      reject(e);
    }
  });
}
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38789738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档