如何在javascript中使用$ .post函数访问带有post方法的页面来下载文件?

时间:2012-09-19 10:32:32

标签: php javascript jquery post

我想为客户编写一个文件下载页面,以便从我公司的服务器上下载文件。

而且我不想向用户公开真实的文件链接,所以我有两个页面: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!

1 个答案:

答案 0 :(得分:0)

您无法使用$.post,但可以使用form创建隐藏的method="POST"并提交。 可选择使用隐藏的iframe作为target来接收结果。