我想为客户编写一个文件下载页面,以便从我公司的服务器上下载文件。
而且我不想向用户公开真实的文件链接,所以我有两个页面:filelist.php用于提供单击链接并将文件名作为参数发布到另一个页面,名为download.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!
答案 0 :(得分:0)
您无法使用$.post
,但可以使用form
创建隐藏的method="POST"
并提交。
可选择使用隐藏的iframe
作为target
来接收结果。