使用隐藏的IFrame下载PHP文件而不保存
我为问题措辞的混乱提前道歉,但我不知道该怎么说 我基本上在数据库中有一个字符串,我打算让用户下载它。我该怎么做呢 我试图使用ajax,但我不知道该怎么做 按下下载链接时执行以下jquery代码使用隐藏的IFrame下载PHP文件而不保存,php,jquery,ajax,download,Php,Jquery,Ajax,Download,我为问题措辞的混乱提前道歉,但我不知道该怎么说 我基本上在数据库中有一个字符串,我打算让用户下载它。我该怎么做呢 我试图使用ajax,但我不知道该怎么做 按下下载链接时执行以下jquery代码 $.ajax({ url: 'index.php/script/downloadFile', type: 'post', data: {name: $(this).text()} }); 相关的PHP代码如下所示: public function downloadScript
$.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)
关于更多信息,我有一个元素列表:
约翰
感谢您的帮助 你可以把它做成一个链接
<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>
约翰
- Bob
$('li')。单击(函数(e){
window.location.href='getfile.php?name='+$(this.text();
});
然后将您的$\u POST
更改为$\u GET
只要标题设置正确,这将下载文件。Hmm,唯一的问题是,确切的元素是通过jquery确定的。我可以在之后将href添加到元素中吗?本质上,下载是页面上的一个自定义右键点击选项。你能给我更多的信息吗?因此,您有一个被单击的DIV,它推送$.ajax?您可以将锚标记上的title属性设置为文件名,然后使用jQuery获取title值,并以这种方式发送ajax调用。只需确保在返回中使用适当的文件下载头。是的,本质上,有一个元素列表。右键单击提供了一个推送ajax请求的菜单,该列表元素的文本是发送到php文件的名称。对不起,我应该把它包括在问题中吗?谢谢!哈哈,它工作得很好,甚至不需要AJAX。请确保在这里清理输入。有数百种方法可以利用这一点$name=“
cat/etc/passwd
”;哈哈,这些列表名称直接来自数据库,所以我不知道这个名称怎么可能是有害的。如果你从$\u POST读取变量,那么它可能会被一些不道德的黑客操纵。安全总比后悔好。