gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 23:29:57 25 4
gpt4 key购买 nike

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

到目前为止一切正常,但我无法找到如何为 GCloud 上的文件设置 Content-Type,否则文件将下载为 application/octet-流

这是我目前的代码:

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);
}
});
}

最佳答案

原来文件上有一个 setMetadata 方法,您可以调用该方法并将 Content-Type 作为参数传递。工作代码如下所示:

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);
}
});
}

关于node.js - 如何使用 node.js 为上传到谷歌云存储的文件设置内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38789738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com