0

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

而且我不想向用户公开真实的文件链接,所以我有两个页面: 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 代码中的“数据”正是我要下载的文件的全部内容。我认为问题在于我在 $.post(); 中使用的函数;javascript中是否有任何功能可以使用post参数打开一个新页面?

我在 windows、apache、php、mysql 上。谢谢!

4

1 回答 1

0

你不能使用$.post,但你可以创建一个隐藏formmethod="POST"并提交它。可选的隐藏iframe用于target接收结果。

于 2012-09-19T14:02:38.373 回答