• php实现文件上传下载功能小结


    文件的上传与下载是项目中必不可少的模块,也是php最基础的模块之一,大多数php框架中都封装了关于上传和下载的功能,不过对于原生的上传下载还是需要了解一下的。基本思路是通过form表单post方式实现文件上传,通过流输出的方式实现文件下载。以下分别讲述实现的具体细节。

    一、文件的上传

    主要用到一个超全局数组:$_FILES,是一个包含五个上传信息的二维数组,如下所示

    array(2) {
      ["pic"]=>
      array(5) {
        ["name"]=>
        string(40) "0ec5972b-ec68-4c49-8504-03a9a3b470c8.jpg"
        ["type"]=>
        string(0) ""
        ["tmp_name"]=>
        string(0) ""
        ["error"]=>
        int(2)
        ["size"]=>
        int(0)
      }
      ["pic1"]=>
      array(5) {
        ["name"]=>
        string(36) "2F5FB17A626C79D7AB7C362E840C8315.jpg"
        ["type"]=>
        string(10) "image/jpeg"
        ["tmp_name"]=>
        string(27) "C:WindowsTempphp208E.tmp"
        ["error"]=>
        int(0)
        ["size"]=>
        int(48516)
      }
    }

    其中

    1. name:上传文件名
    2. type:文件类型 常见的有图片("image/jpeg","image/jeg","image/png","image/gif")
    3. tmp_name: 上传成功后的临时文件名
    4. error: 和该文件上传相关的错误代码
    5. size:上传文件的大小

    其中pic、pic1是上传文件的表单项名,可以任意指定

    一般是在一个index.php文件中浏览上传后的图片,并提供上传表单 注意:上传表单中发送方式必须是post,类型enctype:multipart/form-data

    实现步骤一般有六步:1.获取上传文件信息 2.过滤上传文件的错误号 3.本次上传文件大小的过滤(自己选择)4.过滤文件类型5.上传后的文件名定义(随机获取一个文件名并且保持后缀名不变)6.执行文件上传 代码在此就不贴出了。

    二、文件的下载

    文件的下载一般有两种方式:1.通过超链接实现。地址为文件的地址 ,适用于浏览器解析不了的文件。像压缩文件、脚本文件等。假如文件是图片或者txt文档,就会直接在浏览器中打开,一般不建议用这种方式实现下载功能。

    2.通过流输出,php使用header()函数发送网页的头部信息给浏览器,该函数接收一个头信息的字符串作为参数。文件下载需要发送的头信息包括以下三部分,通过调用三次header()函数完成。本文通过图片下载为例讲述实现过程。主要步骤有:1.获取要下载的文件名(加上路径);2.重设响应类型;3.执行下载的文件名;4.指定文件的大小;5.响应内容。代码如下:download.php

    <?php


    //1.获取要下载的文件名(加上路径)
    $file="./uploads/".$_GET["name"];//通过设置超链接download.php?name={$f},用$_GET获取地址栏参数name获取文件名
    //2.重设响应类型
    //echo '<pre>';var_dump(getimagesize($file));exit;
    $info=getimagesize($file);
    header("Content-type:".$info["mime"]);
    //3.执行下载的文件名
    header("Content-Disposition:attachment;filename=".$_GET["name"]);
    //4.指定文件的大小
    header("Content-Length:".filesize($file));
    //5.响应内容
    readfile($file);

  • 相关阅读:
    leetcode 1 Two sum
    hdu1099
    hdu1098
    函数执行顺序
    浏览器滚动条
    2048的制作
    JavaScript--对象-检查一个对象是否是数组
    JavaScript--格式化当前时间
    JavaScript--模拟验证码
    JavaScript--模拟网络爬虫
  • 原文地址:https://www.cnblogs.com/weblm/p/5274083.html
Copyright © 2020-2023  润新知