在一種「分步」/「嚮導」設置中,我嘗試將新創建的純文本文件發送給用戶。使用PHP下載純文本顯示在瀏覽器窗口中,而不是下載
問題是,在本地主機上(windows,xampp)它按預期工作,但在遠程機器上執行(託管網站空間),它將瀏覽器窗口中的文件內容顯示爲純文本。 (使用相同的瀏覽器進行測試:chrome)
該文件是一個純文本文件,其中包含數據庫備份(只有少數entrys,不大),並且在下載之前創建了一個步驟。下一步是刪除它,那也可以。文件本身是有效的,所有手柄都關閉。瀏覽器中顯示的內容是包含所有行的實際文件。
$ _ POST消毒正值當下載的作品,爲簡化unsanitized大氣壓:
<?php
require_once('CSettings.php');
$s = new CSettings();
$file = $_POST['file'];
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: text/plain');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header("Pragma: public");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Content-Length: ' . filesize($file));
readfile($file);
}
?>
<form action="index.php" method="post" accept-charset="UTF-8">
<input type="submit" value="Delete backup file from the server" class="btn_red">
<input type="hidden" value="<?php echo $file; ?>" name="file">
<input type="hidden" value="delete_backup" name="view">
</form>
有什麼建議?擺弄內容類型已經無濟於事。最後的手段是壓縮整個文件,然後再試一次,但這會使它不必要複雜。
是的,將嘗試作爲一種解決方法。謝謝你的提升,「下載」屬性對我來說是未知的。 但仍試圖找出爲什麼這件事不會在現場機器上下載... – Idenwen
@Idenwen另一個有用的鏈接:http://www.media-division.com/the-right-way-to-處理文件下載在PHP/ –
謝謝,這就是我得到了 '頭(「緩存控制:必須重新驗證,後檢查= 0,預檢查= 0」);' 從工作IE問題(但有問題的用戶只使用chrome [種類的內聯網應用程序]) – Idenwen