5

私はAmazonS3を使用してmp3ファイルを配置し、サイト訪問者がAmazonAWSからmp3をダウンロードできるようにしています。私はS3Foxを使用してファイルを管理していますが、最近まで、ブラウザの保存ダイアログを表示する代わりにmp3がブラウザを介してストリーミングされたという多くの苦情が訪問者から寄せられるまで、すべてが正常に機能しているようです。いくつかのmp3を試してみましたが、いくつかのmp3では保存ダイアログボックスが表示され、他のいくつかではブラウザ経由でストリーミングされていることに気付きました。mp3ファイルをWebブラウザ経由でストリーミングするのではなくダウンロードするように強制するにはどうすればよいですか。

どんな助けでも大歓迎です。ありがとう

4

4 に答える 4

9

そのためには、Content-Dispositionヘッダーを設定する必要があります。

Content-disposition: attachment; filename=song.mp3

これはS3Foxでは不可能だと思います。Bucket Explorer (無料ではありません)を使用するか、スクリプトを記述してファイルをアップロードできます。

于 2010-05-19T10:54:38.030 に答える
2

さて、あなたがこれを尋ねてから長い時間が経ちましたが、私は同じ問題を抱えていました。誰かがこの問題を解決する必要がある場合に備えて、私の解決策をコミュニティと共有したいと思います。もちろん、Amazon S3コンソールからContent-TypeとContent-Dispositionを変更することはできますが、興味深いのはプログラムで変更することです。

次のコードは私にとってはうまく機能します:

require_once '../sdk-1.4.2.1/sdk.class.php';

// Instantiate the class
$s3 = new AmazonS3();

// Copy object over itself and modify headers
$response = $s3->copy_object(
    array( // Source
        'bucket' => 'your_bucket',
        'filename' => 'Key/To/YourFile'
    ),
    array( // Destination
        'bucket' => 'your_bucket',
        'filename' => 'Key/To/YourFile'
    ),
    array( // Optional parameters
        'headers' => array(
            'Content-Type' => 'application/octet-stream',
            'Content-Disposition' => 'attachment'
        )
    )
);

// Success?
var_dump($response->isOK()); 

それが同じ問題で他の苦労を助けることができることを願っています。

于 2011-10-01T18:37:20.353 に答える
2

これは、AWSS3からファイルを強制的にダウンロードするための私のソリューションになりました。

サファリでは、readfileを返すのをやめて、関数を単独で実行するまで、ファイルは.htmlファイルとしてダウンロードされていました。

  public function get_download($upload_id)
  {
    try {
      $upload = Upload::find($upload_id);
      if ($upload->deleted)
        throw new Exception("This resource has been deleted.");

      if ($upload->filename == '')
        throw new Exception("No downloadable file found.  Please email info@clouddueling.com for support.");

      header("Content-Description: File Transfer");
      header("Content-Type: application/octet-stream");
      header("Content-Disposition: attachment; filename={$upload->uploaded_filename};");

      readfile("https://s3.amazonaws.com/stackoverflow/uploads/" . $upload->filename);
      exit;
    } catch(Exception $e) {
      return $e->getMessage();
    }
  }
于 2013-04-10T15:33:37.210 に答える
1

s3管理コンソールウィンドウで、右クリックしてプロパティを選択します。

メタデータをクリックします。

[メタデータを追加]をクリックします

キー:コンテンツ処理値:添付ファイル

保存する。それで全部です。

これが画像ですhttp://i.imgur.com/2PWK3xF.jpg

于 2016-09-23T10:44:33.610 に答える