2016-08-05 96 views
1

我写的代码,上传所取出使用一个文件被上传到谷歌云存储节点取到谷歌云存储桶。如何设置内容类型的文件中使用的node.js

到目前为止一切正常,但我无法找到如何在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); 
    } 
    }); 
} 

回答

7

原来有对文件setMetadata方法,它可以调用传递内容类型作为参数。以下是工作代码的外观:

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); 
    } 
    }); 
} 
相关问题