我想寫一個文件下載頁面供客戶從我公司的服務器上下載文件。
而且我不希望暴露真正的文件鏈接到用戶,所以我有兩個頁面:用於提供一個鏈接,點擊和張貼的文件名作爲參數傳遞給其他頁面,命名的download.php filelist.php ,接受請求並將文件流傳輸給客戶。
的download.php的關鍵部分是這樣的:
$fp = fopen($real_file_path,'r');
$file_size = $temp_res['ef_file_bytes'];
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".$file_size);
Header("Content-Disposition: attachement;filename=".$file_name);
echo fread($fp,$file_size);
fclose($fp);
exit;
現在我在filelist.php使用一個onclick()函數,點擊文件鏈接時,該功能以下稱爲:
function downloadfile(ef_name)
{
var url_str='download.php';
url_str = encodeURI(url_str);
$.post(
url_str,{fnm:ef_name },
function(data){
window.open().document.write(data);
}
);
}
但我只能在頁面上顯示文件的內容,而不是彈出一個對話框窗口來保存它。
如果我使用測試,它運作良好。
上面JS代碼中的'data'正好是我想下載的文件的全部內容。我想這個問題是在$ .post()中使用的函數中。 javascript中有沒有函數可以用post參數打開一個新頁面?
我在windows,apache,php,mysql.Thanks!
[如何用jquery.ajax下載文件](http://stackoverflow.com/questions/4545311/how-to-download-a-file-by-jquery-ajax) –
[使用jquery下載Ajax文件,PHP](http://stackoverflow.com/questions/3599670/ajax-file-download-using-jquery-php) –
你應該考慮尋找同一主題的現有Q/A。 – ibtarek