php之文件上传

一.上传
1.表单中具有浏览框实现具备条件 
a.传输方式必须为post
b.在form标记中添加属性值:
enctype="multipart/form-data"

2.接受上传文件浏览框的信息$_FILE(以数组形式存储)
(1)$_FILES['浏览框名称']['name'];
上传文件的名称
(2)$_FILES['浏览框名称']['type'];
上传文件的类型
(3)$_FILES['浏览框名称']['tmp_name'];
上传文件在服务器中的临时存放的目录及名称;
(4)$_FILES['浏览框名称']['error'];
上传文件的报错信息.0代表没有错误成功.
(5)$_FILES['浏览框名称']['size'];
上传文件的大小,单位字节(Bype);

1024b=lkb



3.将服务器中的临时存放的目录及名称移动目标位置
move_uploaded_file($tmp_name,$filename)

4.与上传文件有关的PHP配置文件参数(php.ini)
(1)file_uplods=on/off
上传文件的开启和关闭
(2)upload_max_filesize=2M;
上传文件的最大值
(3)upload_tmp_dir
上传文件的临时目录





5.上传文件的报错信息
(1)UPLOAD_ERR_OK
其值为 0,没有错误发生,文件上传成功。
(2)UPLOAD_ERR_INI_SIZE
其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。


解决 没文件夹权限上传不能移动文件到文件夹中
  (1)进入root用户
           su  root
   (2) 密码: ycty2016
  (3) 到根目录
             cd  /
  (4) 进入文件夹 home
            cd  home
  (5)给默认主目录最大权限
            chmod -R  777  www
 


6.包含文件函数
include:当第一次加载失败的时候,他会报一个警告型错误,
但是代码继续执行,没有停止的功能
require:当第一次加载失败的时候,报致命错误,后面代码停止执行.
include_once:不重复加载相同的文件;
require_once:不重复加载相同的文件;


7.多文件上传
(1)表单元素中name以数组形式命名
上传信息以$_FILES三维数组形式存储
所以将三维数组转换为标准的二维数组
(2)表单元素中name以单独形式命名形式
多文件上传单独命名形式和单文件上传的
区别,多文件上传单独命名是关联+关联的二维数组,且
有多个成员值,单文件上传只有一个成元.
所以将关联+关联转换为一个标准的二维数组;

8.上传中用到的函数
file_exists($path)/判断是否存在path
mkdir($path);创建$path文件夹





下面是我下的一个文件上传示例


表单省略了,就写了php上传代码

<?php
header('Content-Type:text/html;charset=utf-8');
//1.将单文件上传和多文件上传转索引+关联的二维数组
/* @param
 * @return array
 */

function uploadArr(){
  foreach($_FILES  as $val){
  if(is_string($val['name'])){
  //单上传和单独命名的多上传关联+关联二维数组
  // $val  一维数组
  $arr[] =$val;
  }else{
  // 以数组形式命名多上传三维数组
  // $val  二维数组
  foreach($val['name'] as $k=>$v){
  //$val['name'] 一维数组
  // $k  0 1 2 
  // $v   1.jpg 2.jpg 3.jpg
       $arr[$k]['name'] =$v;
       $arr[$k]['type'] = $val['type'][$k];
       $arr[$k]['tmp_name']= $val['tmp_name'][$k];
       $arr[$k]['error'] = $val['error'][$k];
       $arr[$k]['size'] = $val['size'][$k];
  }
  }
  }
  return $arr;
}


function  uploadFile($path ='./',$typeArr=array('jpg','png','gif','jpeg')){
  if(!file_exists($path)){
  mkdir($path);
  }
  $arr = uploadArr();// 索引+关联的二维数组
  foreach($arr as $v){
        // $v 一维数组
  if($v['error']==0){
   $filename = $v['name'];
   $ext = exTension($filename);
   // 判断 $ext 扩展名是否数组 $typeArr中的值
   if(in_array($ext,$typeArr)){
   $filename = uuid().'.'.$ext;
   $v['name'] =$filename;
   $newArr[] = $v;
      move_uploaded_file($v['tmp_name'],$path.'/'.$filename);
   }else{
    return false;
   }
  }else{
   return false;
  }
  }
  return $newArr;
}

















































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值