2016-08-05 3 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

그것은 당신이 매개 변수로 콘텐츠 형식을 전달 호출 할 수있는 파일에 대한 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); 
    } 
    }); 
}