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;
}