2015-02-13 2 views
2

Я передаю файлы с S3 и через свой API для клиента, чтобы обеспечить соблюдение правил контроля доступа. При этом мне нужно соответствующим образом настроить заголовок содержимого. Кто-нибудь знает, как получить тип контента из S3 без отдельного вызова headObject? Сейчас я должен сначала получить метаданные объекта, а затем сделать другой запрос для получения потока объектов.Могу ли я получить Content-Type из потока объектов S3 без явного вызова headObject?

EDIT: Для уточнения, я использую

return s3.getObject(params).createReadStream(); 

, чтобы получить поток, так что нет обратного вызова, который я знаю.

+0

Запрос 'GET' возвращает точно те же метаданные в заголовках, которые вы получаете от' ГОЛОВЫ 'request ... поэтому кажется, что у вас уже должно быть то, что вы ищете, в data.ContentType в обратном вызове из getObject. Не так ли? –

ответ

0

S3 сохранит объект с Content-Type, который вы указываете, сохраняя свои данные, вызывая функцию putObject.

s3Instance.putObject({ 
    Bucket: "my-bucket", 
    ContentType: "application/xml", 
    Body: xmlContent 
}, function(err) { 
    //callback here 
}); 

Источник: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property

Content-Type возвратного объекта при вызове функции getObject будет тем же, что вы задаете выше. Однако вы можете установить Content-Type, что вы хотите при вызове функции getObject:

s3Instance.getObject({ 
    Bucket: "my-bucket", 
    Key: "MyXMLFile", 
    ContentType: "text/xml" 
}, function(err, data) { 
    //callback here 
}); 

Источник: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getObject-property

Смежные вопросы