我使用亞馬遜S3來放mp3文件,然後讓我們的網站訪問者從亞馬遜AWS下載MP3。我使用S3Fox來管理文件,一切似乎都正常工作,直到最近我們收到很多來自訪問者的抱怨,說mp3是通過瀏覽器流式傳輸的,而不是顯示瀏覽器保存對話框。 我嘗試了一些mp3,並注意到對於某些mp3,保存對話框出現,而對於其他一些則通過瀏覽器進行流式傳輸。我能做些什麼來強制mp3文件將被下載,而不是通過網絡瀏覽器進行流式傳輸....亞馬遜AWS S3強制下載MP3文件而不是流它
任何幫助將不勝感激。 感謝
我使用亞馬遜S3來放mp3文件,然後讓我們的網站訪問者從亞馬遜AWS下載MP3。我使用S3Fox來管理文件,一切似乎都正常工作,直到最近我們收到很多來自訪問者的抱怨,說mp3是通過瀏覽器流式傳輸的,而不是顯示瀏覽器保存對話框。 我嘗試了一些mp3,並注意到對於某些mp3,保存對話框出現,而對於其他一些則通過瀏覽器進行流式傳輸。我能做些什麼來強制mp3文件將被下載,而不是通過網絡瀏覽器進行流式傳輸....亞馬遜AWS S3強制下載MP3文件而不是流它
任何幫助將不勝感激。 感謝
爲了做到這一點,你需要設置Content-Disposition頭:
Content-disposition: attachment; filename=song.mp3
我不認爲這是可能的S3Fox。您可以使用Bucket Explorer(不是免費)或編寫腳本來上傳文件。
好的,你問這個問題已經很長時間了,但是我有同樣的問題,我想和社區分享我的解決方案,以防其他人需要解決這個問題。當然,您可以從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());
希望它能夠幫助其他有同樣的問題掙扎。
這最終成爲我從AWS S3強制下載文件的解決方案。
在Safari瀏覽器中,文件以.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 [email protected] 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();
}
}
這似乎並不是強制從S3下載,而是通過您的網絡服務器將文件從S3推回,捆綁您的web服務器資源以強制下載。 – davidjbullock 2013-06-19 16:11:29
@davidjbullock不知道它是否是,但這是一個不好的例子。我更新了我的例子,以反映我做得更好。 – 2013-06-20 00:22:26
嗯,那是什麼樣的腳本?你能用這樣做嗎? s3cmd(http://s3tools.org/s3cmd)? – Jonik 2010-05-19 16:54:26
我不確定s3cmd。看到這個論壇帖子http://developer.amazonwebservices.com/connect/thread.jspa?messageID=67395。您可以使用REST API來設置標題。亞馬遜爲許多語言提供了庫(Ruby,python,C#)。您可以使用您選擇的語言編寫腳本。 – kgiannakakis 2010-05-20 07:39:05
感謝您的回覆,我使用CloudBerry(免費軟件)來設置內容標題。它工作正常!非常感謝 – Calua 2010-05-21 10:35:26