file.html 表单
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<form action="file.php" method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
</body>
</html>
file.php 接收文件
<?php
header('content-type:text/html;charset=utf-8');
//接收文件
$file=$_FILES['file'];
//调用文件上传函数
include_once 'fileUpload.php';
$res=fileUpload($file,'Upload/',$error);//自己创建一个Upload文件夹来保存上传成功的文件
if ($res){
echo "文件上传成功";
}else{
echo $error;
}
fileUpload.php 文件上传的封装函数
<?php
//文件上传函数封装
/*
* @param1 array $file,要上传的文件信息,包含5个元素
*@param2 string $path,存储位置
* @param3 $string error,错误信息
* @param4 array $type=array(),MIME类型限定
* @param5 int $size=2000000,默认2M
* @return mixed, 成功返回文件名,失败返回false
*/
function fileUpload($file,$path,&$error,$type=array(),$size=2000000 ){
//判断本身文件是否有效
if(!isset($file['error'])){
$error='文件无效';
return false;
}
//有效路径的判断
if(!is_dir($path)){
$error='存储路径无效';
return false;
}
//判断文件本身上传是否成功
switch ($file['error']){
case 1:
case 2:
$error='文件超过服务器允许大小';
return false;
case 3:
$error='文件只有部分上传';
return false;
case 4:
$error='用户没有选择文件上传';
return false;
case 6:
case 7:
$error='服务器操作失败';
return false;
}
//判断类型是否符合
if (!empty($type) && !in_array($file['type'],$type)){
$error='当前上传的文件类型不符合';
return false;
}
//大小判断
if ($file['size']>$size){
$error='文件大小超过当前允许范围.当前允许大小是:'.string($size/1000000).'M';
return false;
}
//转存,移动文件
$newfilename=getNewName($file['name']);
if(@move_uploaded_file($file['tmp_name'],$path.''.$newfilename)){
return $newfilename;
}
else{
$error='文件上传失败';
return false;
}
}
//随机产生一个文件名
function getNewName($filename,$rand=6){
$newname=date('YmdHis');//时间日期部分
//随机部分
$old=array_merge(range('a','z'),range('A','Z'));
shuffle($old);
for ($i=0;$i<$rand;$i++){
$newname.=$old[$i];
}
return $newname.strstr($filename,'.');//组织有效文件名
}
输出:如果上传成功就显示:文件上传成功;会在Upload文件夹中保存上传成功的文件
失败就显示:上传失败的原因
如: