PHP文件下载使用隐藏的IFrame而不保存

时间:2012-07-13 19:25:01

标签: php jquery ajax download

我提前为这个令人困惑的问题措辞道歉,但我无法弄清楚如何把这个。

我基本上在数据库中有一个字符串,我打算让用户下载。我该怎么做呢?

我试图使用ajax,但我不知道该怎么做。

按下下载链接时执行以下jquery代码

$.ajax({

    url: 'index.php/script/downloadFile',
    type: 'post',
    data: {name: $(this).text()}

});

相关的PHP代码如下:

public function downloadScript(){

    $name = $_POST['name'];

    $filename = $name . ".txt";
    $string = //String that comes from database using name to create query
    $filename = $name . ".txt";

    header('Content-type: text/plain');
    header('Content-Disposition: attachment; filename="' . $filename . '"');
    header("Content-Length: " . strlen($string));
    header("Connection: close");

    echo $string;
}

基本上,我希望字符串可供用户下载为文本文件。我不知道AJAX是否是正确的方法,或者是否有更好的方法来执行相同的任务。 (我假设更好的方法是以某种方式合并隐藏的iframe)

有关更多信息,我有一个元素列表:

  • John
  • 杰夫
  • 杰克
  • 当单击一个时,我想将该元素名称的文本发送到php文件以形成查询。

    这就是为什么我没有简单的href设置来启动文件下载。

    修改

    虽然我在这里,但是无论如何我还是要获得多个这样的文件,比如从数据库返回多个字符串,将它们保存为单独的文本文件,压缩它们并发送它们对用户?或者,这需要保存到服务器?

    感谢任何帮助!

    1 个答案:

    答案 0 :(得分:3)

    您可以将其设为链接

    <ul>
        <li class="click_link">John</li>
        <li class="click_link">Bob</li>
    </ul>
    
    <script>
    $('li').click(function(e) {
        window.location.href = 'getfile.php?name=' + $(this).text();
    });
    </script>
    

    然后将$_POST更改为$_GET

    只要您的标题设置正确,就会下载该文件。