我是Yii2
的新手,如果有人能幫助我解決問題,我會非常感激。我想做一個下載鏈接,我使用Yii2發送文件回覆
Yii::$app->response->sendFile($path, $name, ['inline' => false])->send();
在下載功能,但它只是讀取文件的內容,並直接在頁面中顯示。我想要做的是當用戶點擊下載鏈接時,彈出下載對話框或文件將自動下載,而不是顯示內容。誰能幫幫我嗎?
我是Yii2
的新手,如果有人能幫助我解決問題,我會非常感激。我想做一個下載鏈接,我使用Yii2發送文件回覆
Yii::$app->response->sendFile($path, $name, ['inline' => false])->send();
在下載功能,但它只是讀取文件的內容,並直接在頁面中顯示。我想要做的是當用戶點擊下載鏈接時,彈出下載對話框或文件將自動下載,而不是顯示內容。誰能幫幫我嗎?
我有完全相同的問題。事實證明,我的鏈接下載操作被放置在Pjax::begin() Pjax::end()
方法中,因此該文件的內容被視爲該頁面的更新。
我的解決方案:添加data-pjax="0"
屬性下載鏈接。
好的工作。我不知道Pjax可能會打擾下載。 – stfsngue
你可以做的是使用PHP的頭功能:
public function actionDownload() {
$file = $_GET["file"];
$name = str_replace('files/prices/', '', $file);
header("Content-Disposition: attachment; filename=\"" . urlencode($name) . "\"");
header("Content-Type: application/pdf");
header("Content-Description: File Transfer");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($file));
ob_clean();
flush();
readfile($file);
}
然後調用這樣的鏈接,與時間戳: http://page.com/download?file=files/prices/sillas.pdf&ts=1490725032
相反的:
sendFile();
嘗試:
xSendFile()
這可能與Yii2完全不相關,但由於您的瀏覽器從未收到過MIME類型或無法識別它。你想發送什麼類型的內容?也許使用螢火蟲或瀏覽器的調試工具來檢查是否正在收到MIME類型 – Blizz