2016-08-05 13 views
1

gcloud-nodeを使用してノードを取得して取得したファイルをGoogle Cloud Storageのバケットにアップロードするコードを作成しています。node.jsを使用してGoogle Cloud StorageにアップロードするファイルのContent-Typeを設定する方法

これまでのところすべてがうまくいっていますが、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

それはあなたがパラメータとしてのContent-Typeを渡して呼び出すことができ、ファイルの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); 
    } 
    }); 
} 
関連する問題