PHP - 如何下载服务器上的文件

article/2025/9/22 21:15:45

1.应用场景

需要将服务器上的文件,下载到客户端(浏览器)

补充场景: 

PHP如何下载远程服务器上的文件到本地服务器

2.学习/实践

1. 文档

请教PHP如何下载远程服务器上的文件到本地服务器上-php教程-PHP中文网

2. 整理输出

方式有如下几种

2.1 fget()

TBD

2.2 file_get_contents()

TBD

2.3 fopen & fread & fclose

<?php

class Download

{

    /**

     * 下载文件

     * @param $filePath

     */

    public function downloadFile($filePath)

    {

        if (!file_exists($filePath)) {

            echo "下载文件不存在!";

            exit;

        }

        $fileName = basename($filePath);

        $fp = fopen($filePath, "r");

        $fileSize = filesize($filePath);

        //下载文件需要用到的头

        Header("Content-type: application/octet-stream");

        Header("Accept-Ranges: bytes");

        Header("Accept-Length: " . $fileSize);

        Header("Content-Disposition: attachment; filename=" . $fileName);

        $buffer = 1024;

        $fileCount = 0;

        while (!feof($fp) && $fileCount < $fileSize) {

            $fileCon = fread($fp, $buffer);

            $fileCount += $buffer;

            echo $fileCon;

        }

        fclose($fp);

    }

}

// 绝对路径

$filePath = __DIR__ . '\download.json';

// 相对路径,一直提示文件不存在!

// $filePath = 'download.json';

$donwload = new Download();

$donwload->downloadFile($filePath);

结果如下

代码

https://github.com/ningxiaofa/php-learning/blob/master/文件下载/download.php

2.4 cURL --- 很强大的工具

cURL - 学习/实践_william_n的博客-CSDN博客

后续补充

..。

3.问题/补充

1.关于响应头的content-type的设置

code

<?php

error_reporting(0);

header('Content-Type: text/json');

$key=$_GET['key'];
$handle = fopen ("./hello.txt", "rb");

$contents = "";

do {
    $data = fread($handle, 1024);
    if (strlen($data) == 0) {
        break;
    }
    $contents.= $data;
} while(true);

fclose ($handle);
echo $contents;

如果没有设置Header("Content-type: xxx/xxx");

则默认为 text/html

如果设置,则设置是什么, 便是是什么

header('Content-Type: text/json');

header('Content-Type: text/json123');

所以,可以说,我们有时可以自定义content-type类型, 但是不建议。

请结合具体情况分析~~

4.参考

php如何下载?-php教程-PHP中文网

后续补充

...
 


http://chatgpt.dhexx.cn/article/q7JfD1DZ.shtml

相关文章

PHP获取当前服务器版本,Ip等详细信息

新做的一个项目后台几乎完了&#xff0c;简单加了一个获取服务器详情的页面,记录一下&#xff0c;留着备用&#xff01; 服务器IP地址 $_SERVER[SERVER_ADDR]服务器域名 $_SERVER[SERVER_NAME] 服务器端口 $_SERVER[SERVER_PORT]服务器版本 php_uname(s).php_unam…

微信小程序之PHP服务器搭建

在去年的时候&#xff0c;参加过学校的一个创业活动&#xff0c;在团队决定做一个关于图书的微信小程序以后&#xff0c;我负责做微信小程序的后台程序&#xff0c;因为初次接触&#xff0c;决定选用较为简单的PHP作为后台语言&#xff0c;实现了微信小程序的一些基本功能&…

【树莓派】搭建LAMP(Linux Apache Mysql PHP)服务器

基于树莓派搭建LAMP&#xff08;Linux Apache Mysql PHP&#xff09;服务器 配置树莓派 树莓派 连接WIFI 配置SSH 连接SSH 修改密码并解锁root用户 固定IP 调整服务器性能 Apache Mysql PHP 内网穿透 本文主要介绍了树莓派购买后的配置方法&#xff0c;并在树莓派上搭建LAMP&am…

PHP分布式部署代码同步Git实现

PHP 分布式部署后 代码自动同步实现 项目架构如下: 需要更新代码时我们只需要把代码传到主服务器后通过定时任务主服务器自动push 代码到Git服务端,之后其他从服务器则自动从Git云端拉取最新的代码即可 需要用到 expect 软件 安装expect yum install expect定时push shell…

大部分PHP程序员,都搞不懂如何安全代码部署

总结 1.创建一个普通用户账户 2.先设置所有文件夹为只读不可写 sudo chmod -R a-w /path/to/directory3.再把php执行的用户组加上 sudo chown -R username:groupname /path/to/php/files4.再把可执行的文件加入 sudo chmod -R 755 /path/to/php/files关于权限 理清PHP在Lin…

PHP项目部署到云服务器(CentOS+HTTP+PHP+MYSQL)

如何将写好的项目部署到云服务器&#xff0c;让外界可以通过互联网访问项目网站。以下使用的是腾讯云服务器操作&#xff0c;系统环境为CentOS7.9。 一、购买云服务器 打开腾讯云官网&#xff0c;注册好自己的平台账号。如果是新人的话去新人专区购买服务器&#xff0c;性价比…

phpstudy搭建nginx+php服务器显示php网页

下载了phpstudy-all.bin一键安装包&#xff0c;管理员执行./phpstudy-all.bin安装完成后&#xff0c;在火狐浏览器上输入:localhost 测试服务器是否从成功。 遇到的问题&#xff1a; 默认打开的web页面是/usr/share/nginx/www/index.html页面&#xff0c;如下 初次尝试解决&a…

php如何启动内置web服务器

前言&#xff1a; PHP从5.4开始&#xff0c;就提供了一个内置的web服务器。 当然这个主要是用来做本地的开发用的。 不能用于线上环境。 现在我就介绍一下这个工具如何使用。 前提&#xff1a; php已经加入到本地电脑的环境变量中 命令中输入&#xff1a; cd 项目目录 php -S…

公司官网建站笔记(二):在云服务器部署PHP服务(公网访问首页)

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/124659175 各位读者&#xff0c;知识无穷而人力有穷&#xff0c;要么改需求&#xff0c;要么找专业人士&#xff0c;要么自己研究 红胖子(红模仿)的博…

阿里云ECS服务器Linux环境下配置php服务器(三)--项目部署篇

在前两篇里&#xff0c;我们分别介绍了如何购买阿里云服务器&#xff0c;安装基本软件和配置&#xff08;请看阿里云ECS服务器Linux环境下配置php服务器(一)&#xff0d;&#xff0d;基础配置篇&#xff09; 以及如何安装使用phpMyAdmin&#xff08;请看阿里云ECS服务器Linux环…

阿里云ECS服务器Linux环境下配置php服务器(二)--phpMyAdmin篇

上一篇讲了php服务器的基本配置&#xff0c;我们安装了apache&#xff0c;php&#xff0c;还有mysql&#xff0c;最后还跑通了一个非常简单的php页面&#xff0c;有兴趣的朋友可以看我的这篇博客&#xff1a; 阿里云ECS服务器Linux环境下配置php服务器(一) 这一次我们来继续说…

微信小程序wx.uploadFile(上传文件)PHP服务器获取formData的数据

例如下面的代码是微信小程序上传图片的伪代码 wx.chooseImage({success: function(res) {var tempFilePaths res.tempFilePathswx.uploadFile({url: https://example.weixin.qq.com/upload, //仅为示例&#xff0c;非真实的接口地址filePath: tempFilePaths[0],name: file,fo…

树莓派4B搭建轻量级Web服务器 (Nginx,sqlite,php)

树莓派硬件的配置&#xff0c;包括外置硬盘的挂载和设置&#xff0c;系统的烧录和设置就略了&#xff0c;详情见第一篇文章。 一&#xff1a;更新源安装Nginx服务器 sudo apt-get updatesudo apt-get install nginx二&#xff1a; 启动Nginx服务器 //启动服务器的两种方式sudo…

一、用XAMPP搭建本地PHP服务器,运行php文件

一、XAMPP下载安装 点击下载&#xff0c;下载完成之后执行安装文件安装&#xff0c;一路next&#xff0c;完成。运行界面如下&#xff1a; 二、启动 这里&#xff0c;我是把XAMPP安装在了D:\XAMPP文件夹下。 点击第一行Apache后面的Start是启动XAMPP本地虚拟机(默认端口8080)…

Android手机利用KSWEB+端口转发搭建PHP服务器

Android手机利用KSWEB端口转发搭建PHP服务器 转载来自&#xff1a;https://golthr.gitee.io/articles/202002281619/ KSWEB是一款基于Android的开源服务器&#xff0c;可通过Lighttpd/Nginx/ApachePHPMySql在Android手机上搭建起自己的私人PHP WEB服务器。软件提供了上述功能…

PHP搭建服务器

1. 认识互联网 思考&#xff1a;平常我们上网的时候是怎么实现的&#xff1f; 引入&#xff1a;上网其实打开浏览器&#xff0c;然后输入一个URL&#xff0c;最后就看到了网站打开的效果。 1.1. 普通用户访问网站【了解】 定义&#xff1a;URL&#xff1a;Uniformed Resource L…

PHP本地web服务器搭建教程(通俗易懂版)

现在是北京时间21点22分&#xff1b;忙碌了一天的小菜鸡开始写起了博文。在被搭建本地服务器折磨了一天后终于成功的本人&#xff0c;怀着激动的心情写下了这篇博文&#xff0c;也算是写一篇学习笔记了&#xff0c;希望本篇博文能对想搭一个本地服务器的小伙伴们有所帮助。 好…

PHP(1)搭建服务器

PHP&#xff08;1&#xff09;搭建服务器 一、配置并安装Apache1. 配置2. 安装3. 验证4. 排错5. 重启6. 添加环境变量 二、安装PHP1. 配置2. 验证 三、Apache加载PHP四、安装虚拟主机 一、配置并安装Apache 1. 配置 下载 Apache Download解压 将解压后的文件夹复制到指定目录…

微信小程序网络请求服务器php接口获取数据库数据信息

前言 在写php接口之前 需要事先搭建好环境 1 拥有一台服务器 2 服务器安装好宝塔 3 搭建安装好Apache套件&#xff08;包括php Apache MySQL数据库等等&#xff09; 4 已经开放相应的端口 5 安装微信开发者工具 如果小白没关系&#xff0c;下面的视频会一步一步的说明很详细&…

Android Studio —— ArrayAdapter

效果 代码过程 代码 <?xml version"1.0" encoding"utf-8"?> <TextView xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:gravity"center_vertical"andro…