美文网首页PHP那些事儿
PHP文件的上传与下载

PHP文件的上传与下载

作者: 栋公子 | 来源:发表于2019-06-25 22:33 被阅读0次

    今天给大家介绍的是PHP文件的上传与下载,分为两部分,第一部分:文件的上传,第二部分:文件的下载;

    一.文件的上传

    原理:将客户端的文件上传到服务器端,在将服务器端的临时文件移动到指定目录即可。

    客户端:准备一个表单页面,表单的发送方式为post,并且添加enctype="multipart/form-data",记住:发送方式一定为post,并且form里面一定要添加enctype="multipart/form-data",两者缺一不可。

    以下为客户端的简单实现代码:

    服务器:用PHP预定义变量$_FILES来接收传过来文件,以下为客户端接收页面的截图:

    $_FILES变量解析,以下为截图:

    数组解析:myfile为表单提交页面自定义的name;name为上传文件的名字;type为上传文件的原始名称;tmp_name为上传文件的临时保存文件的位置;error为上传文件的错误信息;size为上传文件的大小;

    服务端保存文件的两种方式:

    第一种:通过move_uploaded_file($tmp_name,$filename)函数实现,以下为截图:

    第二种:通过copy()函数实现,以下为截图:

    文件上传常规配置解析,这些配置选项都在php.ini文件中,以下为截图:

    文件上传的其他配置解析,以下为截图:

    上传文件错误信息说明,以下为截图:

    客户端上传文件限制,以下为截图:

    服务器端上传文件限制(单文件上传实例):以下为截图:

    二.文件的下载

    文件的下载一种是可以通过表单的超链接方式实现,这个主要是实现浏览器不识别的文件类型,例如:

    对于一些浏览器识别的文件,比如图片,视频来说就要通过PHP代码来实现了,以下为实现过程:

    上面的这种方式虽然实现了文件的下载,但是也是有他的缺陷性的,比如不能批量下载,而且下载完之后浏览器的页面会跳转,严重影响我们的业务,下面的这种方式就解决了这个问题。

    <?php

    /**

    *@params string $url 要下载的文件地址

    *@params string $filePath 要保存的文件位置

    */

    function downFile($url,$filePath){

      if($url=='' || $url==NULL){

            return "下载地址不能为空";

      }

      $ext_name = strrchr($url,'.');//获取文件的扩展名

      ob_start();//打开输出缓冲区,所有的输出信息不在发送给浏览器,保存在缓冲区

      readfile($url);//将文件写入到缓冲区

      $file_data = ob_get_contents();//获取缓冲区文件内容,内容为二进制

      $filename = "./".$filePath.time().$ext_name;//构建保存文件位置

      ob_end_clean();//清空缓冲区

      $local_file = fopen($filename,'a');//打开文件

      $fwrite($local_file,$file_data);//将内容写入文件

      fclose($local_file);//关闭文件

    }

    通过这个函数,我们就可以轻松实现文件的下载,而且我们可以循环调用来实现批量下载。

    相关文章

      网友评论

        本文标题:PHP文件的上传与下载

        本文链接:https://www.haomeiwen.com/subject/wkefcctx.html