欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php怎么下载文件,php文件下载正确方法

程序员文章站 2022-06-12 18:44:53
...
  1. // 检查 form 是否全部填写完毕...
  2. if ($form_completed) {
  3. Header("Location: http://www.myweb.com/download/info_check.exe");
  4. exit;
  5. }
  6. ?>
  7. 或者:
  8. 开始下载文件
复制代码

这里利用了ID方式接收要下载文件的编号,然后用“Redirect”的方式连接到实际的网址。

为安全起见,不让用户直接复制网址下载该文件,建议使用PHP直接读取该实际文件然后下载。

代码:

  1. $file_name = "info_check.exe";
  2. $file_dir = "/public/www/download/";
  3. if (!file_exists($file_dir . $file_name)) { //检查文件是否存在
  4. echo "文件找不到";
  5. exit;
  6. } else {
  7. $file = fopen($file_dir . $file_name,"r"); // 打开文件
  8. // 输入文件标签
  9. Header("Content-type: application/octet-stream");
  10. Header("Accept-Ranges: bytes");
  11. Header("Accept-Length: ".filesize($file_dir . $file_name));
  12. Header("Content-Disposition: attachment; filename=" . $file_name);
  13. // 输出文件内容
  14. echo fread($file,filesize($file_dir . $file_name));
  15. fclose($file);
  16. exit;}
  17. ?>
复制代码

而如果文件路径是“http”或者“ftp” 网址,则源代码会有少许改变,程序如下:

  1. $file_name = "info_check.exe";
  2. $file_dir = "http://www.jincai123.com/";
  3. $file = @ fopen($file_dir . $file_name,"r");
  4. if (!$file) {
  5. echo "文件找不到";
  6. } else {
  7. Header("Content-type: application/octet-stream");
  8. Header("Content-Disposition: attachment; filename=" . $file_name);
  9. while (!feof ($file)) {
  10. echo fread($file,50000);
  11. }
  12. fclose ($file);
  13. }
  14. ?>
复制代码

使用以上代码,可以用php直接输出文件。