• PHP文件的上传与下载


    文件上传:


    1.单个与多个文件上传
    2.上传表单的属性设置
    3.PHP配置文件中相关文件上传的设置
    4.PHP处理上传的文件数据

    php.ini配置:
    file_uploads = on; 默认on
    upload_max_filesize = 2M; 默认2M  最大不能超过服务器内存
    upload_tmp_dir = c:/uploads/    默认为系统临时目录c:/windows/temp/  上传文件的临时路径
    post_max_size=250M;默认为8M  

    form表单设置:
    1.文件上传控件必须放在Form表单中,必须有name属性
    2.提交方式必须为POST,必须指定enctype="multipart/form-data" 用来指定表单传输数据的编码方式
    <form action="php_fileupsave.php" method="post" enctype="multipart/form-data">
        <input type="file" name='pic'/>
        <input type="submit" value="上传"/>
        <inpu type='hidden' name='MAX_FILE_SIZE' value='1000000'/>
    </form>
    3.建议添加标签:<inpu type='hidden' name='MAX_FILE_SIZE' value='1000'/>用于快速提示最大上传文件大小

    服务器通过$_FILES接收上传文件:
    $_FILES["pic"]
    Array
    (
        [pic] => Array
            (
                [name] => gone.jpg     文件名
                [type] => image/jpeg   文件类型
                [tmp_name] => C:Windows empphpFD5.tmp  临时保存路径
                [error] => 0          //错误号
                [size] => 62481        //文件大小
            )
    )

    [将临时位置的文件移动到指定的目录]
    copy($_FILES['pic']['tmp_name'],'/upload/files/a.jpg')

    处理上传的文件:
    1.检查错误:$_FILES['pic']['error']==0
    2.限制上传大小:$_FILES['pic']['size']/1024   小于5M
    3.限制文件扩展名:$_FILES['pic']['type']  只能是图片
    4.重命名文件(文本文件处理文件内容)

    文件下载:


    1.部分文件如.rar/doc/pdf可以使用a标签加连接地址以附件形式下载
    2.但是如果是txt/html/jpg/gif等网页文件和脚本文件会在浏览器直接打开

    请求:
    1.HTTP 1.1 协议版本
    2.头信息
    3.表表单信息

    响应
    1.状态码 200 ok
    2.头信息
    3.响应内容

    头信息在服务器端必须在最开始添加
    header("Content-Type:text/html; charset=utf8");
    header("location:demo.php"); 页面重定向
    <script>window.location='demo.php'</script>

    告诉浏览器,将文件以附件的形式处理
    header('Content-Type:image/gif'); 类型,客户端会自动检测
    header(Content-Length:20000); 大小,客户端会自动检测
    header('Content-Diposition: attachment; filename='a.gif');
    readfile('a.gif');

    服务器端:

    使用$_FILES来接收文件数

    HTML代码示例:

       1: <?php
       2: header("Content-Type:text/html; charset=utf8");
       3: ?>
       4: <html>
       5: <head>
       6:     <title></title>
       7: </head>    
       8: <body>
       9:         <form action="fileUpProcess.php" method="post" enctype="multipart/form-data">
      10:             <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
      11:             <input type="file" name='pic[]'/><br/>
      12:             <input type="file" name='pic[]'/><br/>
      13:             <input type="file" name='pic[]'/><br/>
      14:             <input type="submit" value="上传"/>
      15:         </form>
      16:     </body>
      17: </html>

    PHP接收处理文件代码:

       1: <?php
       2: header("Content-Type:text/html; charset=utf8");
       3: // echo "<pre>";
       4: // print_r($_FILES);
       5: // echo "</pre>";
       6:  
       7: // 1.检查错误:$_FILES['pic']['error']==0 
       8: if($_FILES['pic']['error']>0)
       9: {
      10:     switch ($_FILES['pic']['error']) {
      11:         case 1:
      12:             die("文件超过了 php.ini 中 upload_max_filesize 选项限制的值");
      13:         case 2:
      14:             die("文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值");
      15:         case 3:
      16:             die("文件只有部分被上传");
      17:         case 4:
      18:             die("没有文件被上传");
      19:         default:
      20:             die("网络异常");
      21:     }
      22: }
      23: // 2.限制上传大小:$_FILES['pic']['size']/1024   小于5M
      24: $maxSize = 1024*1024;
      25: if($_FILES['pic']['size']>$maxSize)
      26: {
      27:     die("上传失败,上传文件不能超过".($maxSize/1024)."M");
      28: }
      29:  
      30: // 3.限制文件扩展名:$_FILES['pic']['type']  只能是图片
      31: // image/gif
      32: // image/jpeg
      33: // image/png
      34: /*不能精确匹配文件类型
      35:  list($type,$ext) = explode('/', $_FILES['pic']['type']);
      36:  if($type!='image'){
      37:      die("上传失败,只能上传图片文件");
      38:  }
      39:  */
      40:  
      41: // 通过文件扩展名来限制:
      42: //取得文件扩展名
      43: $arr = explode('.', $_FILES['pic']['name']);
      44: $ext = strtolower($arr[count($arr)-1]);
      45:  
      46: $allowExt=array("png","gif","jpg","jpeg");
      47: if(!in_array($ext, $allowExt))
      48: {
      49:     die("上传失败,文件格式不正确!");
      50: }
      51:  
      52: // 4.重命名文件(文本文件处理文件内容)
      53: $filePath = "";
      54: $newName = date('Y').date('m').date('d').date('H').date('i').date('s').rand(100,999).'.'.$ext;
      55:  
      56: // 5.将文件保存到指定目录
      57: //判断文件是否是通过HTTP POST上传的文件
      58: if(is_uploaded_file($_FILES['pic']['tmp_name'])){
      59:     if(move_uploaded_file($_FILES['pic']['tmp_name'], "./DownFiles/".$newName)){
      60:         echo "文件上传成功!";
      61:     }
      62: }
      63: else{
      64:     die("非上传文件");
      65: }
      66:  
      67: ?>
  • 相关阅读:
    pandas属性和方法
    os模块常用方法
    读/写xlsx文件
    读/写docx文件
    文件基本用法
    jieba.lcut方法
    移动端设置input属性disabled样式
    移动端日期选择,下拉框选择效果
    css背景色渐变代码
    拖动div元素
  • 原文地址:https://www.cnblogs.com/lt-style/p/3511477.html
Copyright © 2020-2023  润新知