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


PHP File Download Using Hidden IFrame Without Saving

我提前为令人困惑的问题措辞道歉,但我不知道该怎么说。

实际上,我在数据库中有一个字符串,我打算让它可以供用户下载。我该怎么做?

我试图使用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)

为了获得更多信息,我有一个元素列表:

约翰

  • Jeff
  • Jack
  • 单击后,我想将该元素名称的文本发送到php文件以形成查询。

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

    编辑:

    当我在做这件事的时候,有没有办法让我获得不止一个这样的文件,比如说有多个从数据库返回的字符串,将它们保存为单独的文本文件,将它们压缩并发送给用户?或者,这需要保存到服务器吗?

    感谢您的帮助!

    您可以将其作为链接

    <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

    只要您的标题设置正确,这将下载文件。