2012-02-07 6 views
5

docsによると、コンテンツタイプはオプションで、は、ファイル拡張子に基づいて正しいMIMEタイプを判別しようとします。しかし、それはアプリケーション/ octet-streamのAWS SDK for PHPを使用してアップロードされたAmazon S3ファイルは、常に "application/octet-stream"ですか?

にMIMEタイプと、常にデフォルト値を推測するように見えたことはありませんここに私のコードは次のとおりです。

$s3 = new AmazonS3(); 

$opt = array( 'fileUpload' => $_FILES['file']['tmp_name'], 
       'storage'  => Amazons3::STORAGE_REDUCED); 

$r = $s3->create_object('mybucket', $_FILES['file']['name'], $opt); 

は、ここに私のAWSコンソールのスクリーンショットです:

enter image description here

ContentTypeオプションを設定せずに実際に適切なコンテンツタイプを自動的に設定するにはどうすればよいですか、それとも手動で設定する必要がありますか?

追加情報:コンソールからファイルをダウンロードしてから(元々はSDK経由でアップロードした)、コンソールを使用して再度アップロードすると、適切なContent-Typeが設定されます(例:アプリケーションの代わりにGIFファイルの場合はimage/gif/octet-stream)

答えて

6

オブジェクトを作成するときにoptions配列に 'contentType'キーを追加し、 'fileUpload'ではなく 'body'を使用してみてください。例:

$s3->create_object('MY_BUCKET', 'xml_file.xml', array(
             'body' => '<xml>Valid xml content</xml>', 
             'contentType' => 'text/xml' 
            )); 

text/xmlコンテンツタイプのファイルを作成しました。私が知っているように、Content-TypeはSDKを使ってアップロードするときに自動的には設定されません。しかし、PHP側からMIMEタイプを起動し、 'contentType'プロパティを設定する問題はどこにありますか?

+1

はい私はいつもcontentTypeを設定することができますが、ドキュメントには自動的に行われると書かれています: * fileUploadを介してファイルシステムのパスとしてアップロードされているファイルは、正しいMIMEタイプファイル拡張子に* しかし、それはおそらくバグがあるので起こっていません。 – IMB

+1

'ContentType'と大文字の' C'です。さもなければ、それは私にとってはうまくいかない。 –

+0

上記の答えは私が新しいSDKに移るまで私のために働いていました。私はもうそれを働かせることはできません:http://stackoverflow.com/questions/21892352/specify-content-type-in​​-aws-phps-upload-function –

1

私はちょうどファイルをアップロードするときにContent-Typeが自動的に検出されなかったこの状況に遭遇しました。私はSDKの実行を見ているコードを踏み出すまで、原因が何であるかを知ることができませんでした。 Content-Typeを自動的に判別するために使用されるCFMimeTypes :: get_mimetype()関数は、大文字と小文字を区別した比較を使用してMIMEタイプを判別することを発見しました。このため、小文字の拡張子のみが一致します。あなたのファイル拡張子が大文字または大文字小文字の場合、 'application/octet-stream' MIMEタイプに一致してフォールバックされません。ライン変更修正するには

'fileUpload' => strtolower($_FILES['file']['tmp_name']) 

'fileUpload' => $_FILES['file']['tmp_name'] 

を私はSDKのV 1.5.8.2を使用していますが、この検出に変更があるようには見えません。過去1週間にリリースされた1.5.9または1.5.10のリリース。私はこれをバグとみなし、そういうものとして提出します。

+0

自動MIMEタイプの検出は、SDKのバージョン1.5で修正されました.15。 – Brady

関連する問題