首先要知道文件上传的一些限制可以配置php.ini文件
参数
file_uploads 默认为on 允许通过http上传文件
upload_tmp_dir 文件上传至服务器时用于监视存储的mul
upload_max_filesize 允许上传文件大小的最大值(默认为2M 单个文件大小)
post_max_size php可接收的post数据最大值,默认为8M(表单中的所有文件大小)
一般不需要更改这些设置,除非有特殊要求
预定义变量$_FILES
$_FILES['file']['name'] 文件原名称
$_FILES['file']['type'] 文件的类型
$_FILES['file']['size'] 已上传文件的大小 单位为字节
$_FILES['file']['tmp_name'] 文件上传后在服务器端存储的临时文件名
$_FILES['file']['error'] 该文件上传相关的错误代码
注意:
要确保文件上传成功 表单必须保证是post上传而且必须设置
enctype = "multipart/form-data"
效果:
来一些文件上传错误代码$_FILES['file']['error']
0 没有错误,文件上传
1 文件上传超过了upload_max_size选项限制
2 上传文件大小超过了html表单max_file_size的值
3 文件只有部分被上传
4 没有文件被上传
6 找不到临时文件夹
7 文件写入失败
保存在服务器端的临时文件在代码执行结束时会自动清除
文件上传函数
is_uploaded_file() 判断文件是否是通过HTTP post上传的
rename() 重命名一个文件或目录
move_uploaded_file() 将上传的文件移动到新位置
is_uploaded_file($file['tmp_name']);
$file['tmp_name'] 是服务器端临时文件名
move_uploaded_file($file['tmp_name'],'./')
$file['tmp_name'] 原临时文件,
./ 新位置
文件上传实例
html页面脑补吧!
<?php
/*
思路:
1.客户端通过表单post提交文件
2.服务器端(PHP)判断没有错误通过$_FILES,预定义变量获取到文件信息
3.通过文件上传函数将文件保存到服务器端相应的位置
*/
// 获取name为fileUP的表单
$file = $_FILES['fileUp'];
// 先判断是否有错误
if($file['error']==0){
// 给临时文件取一个新名,因为临时文件会在执行完自动清除
if(is_uploaded_file($file['tmp_name'])){
$name = strstr($file['name'], ".");
$newName = rand(1,9999).$name;
if(move_uploaded_file($file['tmp_name'], './'.$newName)){
echo "移动成功";
}else{
echo "移动失败!";
}
}else {
echo "不是通过HTTP上传文件";
}
}else{
switch ($file['error']) {
case 1 :
$error = "文件上传超过了upload_max_size选项限制";
break;
case 2 :
$error = "上传文件大小超过了HTML表单中MAX_FILE_SIZE的值";
break;
case 3 :
$error = "文件只有部分被上传";
break;
case 4 :
$error = "没有文件被上传";
break;
default:
break;
}
echo $error;
}
?>