Php 让客户端从服务器下载文件
我需要实现一个代码,让客户端在web服务器上下载一个或多个本地文件 我有3个文件:file1.php,file2.js,file3.php,代码如下 在file1.php中:Php 让客户端从服务器下载文件,php,file-io,Php,File Io,我需要实现一个代码,让客户端在web服务器上下载一个或多个本地文件 我有3个文件:file1.php,file2.js,file3.php,代码如下 在file1.php中: <select name="file_list" class="myclass" id="f_list" style="height:25px; width: 280px"> <?php foreach (new DirectoryIterator("$filesFolder") as $file)
<select name="file_list" class="myclass" id="f_list" style="height:25px; width: 280px">
<?php
foreach (new DirectoryIterator("$filesFolder") as $file)
{
if((htmlentities($file) !== ".") && (htmlentities($file) !== ".."))
{
echo "<option>" . htmlentities($file) . "</option>";
}
}
?>
</select>
<?php
echo "<input type=\"button\" value=\" Download \" onClick=\"downloadFile()\"/>";
?>
我从中获取了最后一段PHP代码,因为行为正是我所需要的。但是当执行file3.php时,文件的内容(二进制数据)会打印在屏幕上
我想我没有实现一些功能,但我不知道它可能是什么。
如何获得与readfile PHP手册页面相同的结果
提前感谢您的帮助。文件2: 不能使用
.load()
或类似方法下载文件
只需使用window.location.href=“file3.php?filename=”+$(“#f#u list”).val()代码>
文件3:
在调用header()
s之前,不能输出任何内容。注释掉第5行的echo
在文件2中,我们使用GET而不是POST,将
$\u POST
替换为$\u GET
也可能有助于不使用ajax请求页面,只需使用
window.location.href='/download/url';
如果所有标题都正确,它将在不离开当前页面的情况下打开下载对话框。一种方法是尝试在新选项卡/窗口中打开文件:
function downloadFile()
{
window.open("file3.php?filename=" + encodeURIComponent($("#f_list").val()));
}
由于PHP页面的结果具有标题,指示内容是下载而不是页面,因此浏览器不会实际导航,而是提供一个下载框。请注意,此方法使用GET not POST,因此您必须在file3.php中从
$\u POST
更改为$\u GET
或$\u REQUEST
。另外,请确保在标题消失之前删除echo
,否则这将无法工作。尝试在没有echo()的情况下运行它。
?除非处理多部分消息,否则每个内容只能有一种内容类型。“这也可能有帮助。”-无法通过ajax提供下载。@simo zz我很高兴您的问题得到解决:)请接受对您帮助最大的答案。完成。。再次感谢你。
window.location.href='/download/url';
function downloadFile()
{
window.open("file3.php?filename=" + encodeURIComponent($("#f_list").val()));
}