我正在编写代码,将使用node-fetch获取的文件上传到Google Cloud Storage中使用gcloud-node的存储桶中。
到目前为止,一切都很正常,但我在找出如何在GCloud上设置文件的Content-Type时遇到了麻烦,否则该文件将以application/octet-stream格式下载。
这是我到目前为止所拥有的代码:
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);
}
});
}发布于 2016-08-05 20:58:06
原来在文件上有一个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);
}
});
}https://stackoverflow.com/questions/38789738
复制相似问题