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)

我需要实现一个代码,让客户端在web服务器上下载一个或多个本地文件

我有3个文件:file1.phpfile2.jsfile3.php,代码如下

file1.php中

<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()));
}