2013-01-04 12 views
26

何らかの理由で、S3バケット内のファイルがインライン表示ではなくダウンロードとして強制されているので、画像リンクをコピーしてアドレスバーに貼り付けてから移動すると、それは私のブラウザのダウンロードを促進するでしょう。代わりに、私は実際に開いているイメージをクリックしてURLに行く必要があります。強制ダウンロードではなくAWS S3表示ファイルインライン

ファイルの配信方法を変更する方法はありません

+0

イメージリンクをコピーすると、イメージURLが直接指し示されます。ブラウザは、提供されたURLを実行することを単に理解しています。 –

+0

@SunilGulabaniしかし、amazon s3を使用しているサイトでは、ファイルを強制的にダウンロードせずにファイルに直接アクセスできます。例えば、画像ホスティングサイトは、直接的な画像アクセスを可能にする。私は直接のファイルパスを指していますが、これは私のS3バケットでホストされているファイルの例です:https://droplet-files.s3.amazonaws.com/7c32280bbcb1d3e67ac799ce9c71212f.JPG –

+1

私はあなたのコンテンツタイプが間違っていると思います画像をアップロードする。それはimage/jpegである必要があります。コンテンツタイプを確認してください:http://en.wikipedia.org/wiki/Internet_media_type –

答えて

23

Content-Typeを変更する必要があります。 S3コンソールからオブジェクトを右クリックし、[プロパティ]を選択します。メタデータの下にあります。プログラムによっても行うことができます:http://docs.amazonwebservices.com/AWSSDKforPHP/latest/index.html#m=AmazonS3/change_content_type

+1

私は$ s3-> putObjectFile($ tmp、$ bucket、$ actual_image_name 、S3 :: ACL_PUBLIC_READ)。しかし、何らかの理由でバケツポリシー –

+1

@ Cl 'を使って達成したいことを思い出しました。[putObject()メソッドでコンテンツタイプを設定することもできます(http: //undesigned.org.za/2007/10/22/amazon-s3-php-class/documentation#putObject)( 'putObjectFile()'は従来通りです)。 – mathielo

21
$client->putObject(array(
     'Bucket'  => 'buckname', 
     'Key'  => $destination, 
     'SourceFile' => $source, 
     'ContentType' =>'image/jpeg', //<-- this is what you need! 
     'ACL'   => 'public-read'//<-- this makes it public so people can see it 
    )); 
関連する問題