个人比较推荐面向对象的方法,可扩展,可自定义,看起来也明白,见链接
http://blog.youkuaiyun.com/wang2009052110/article/details/77920223
当然,在这之前我也写了一个面向过程的方法,稍微有点乱,如下
前端html代码:
<html>
<head>
<title>文件上传测试</title>
<scripttype="text/javascript"src="uploadFile.js"></script>
</head>
<body>
<form
action="upload.php"
method="post"
enctype="multipart/form-data">
<labelfor="file">Filename:</label>
<inputtype="file"name="fileNames[]"id="files"
multiple="multiple" />
<br />
<inputtype="submit"name=""
value="Submit" />
</form>
<buttononclick="showFileName()">查看文件名称</button>
</body>
</html>
后台PHP代码
<?php
/**
* 支持多文件上传
* jaywong20170909
*/
// class uploadFile{
//判断文件是否符合要求,包括文件类型,大小等
$fileNames = 'fileNames';
$supportType = ['image/jpg','image/png','image/gif','image/jpeg','image/tiff'];
$maxSize = 3000000;
$filepath = '/users/jaywong/sites/uploadTest';
$n = count($_FILES[$fileNames]['name']);//$_FILES must be used for reading files information.
// echo count($fileNames);//this does not work.
for($i = 0; $i < $n; $i++){
$fileInfo = $_FILES[$fileNames];
$fileName = $fileInfo['name'][$i];
//判断文件类型
if(!in_array($fileInfo['type'][$i],$supportType)){
exit($fileName.'不支持文件类型.<br>');
}
//判断是否有错误
if($fileInfo['error'][$i]){
switch ($fileInfo['error']){
case 1:
exit('UPLOAD_ERR_INI_SIZE:上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值');
case 2:
exit('UPLOAD_ERR_FORM_SIZE:上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。');
case 3:
exit('UPLOAD_ERR_PARTIAL');
case 4:
exit('UPLOAD_ERR_NO_FILE');
case 6:
exit('UPLOAD_ERR_NO_TMP_DIR');
case 7:
exit('UPLOAD_ERR_CANT_WRITE');
}
}
//判断文件大小
if($fileInfo['size'][$i]>$maxSize){
exit($fileName.'文件太大了,超过了3m.<br>');
}
//创建目录
if(!file_exists($filepath)){
mkdir($filepath);
}
//创建上传文件名称
$filename1 = pathinfo($fileName,PATHINFO_FILENAME);
$extention = pathinfo($fileName,PATHINFO_EXTENSION);
$upfileName = $filename.time("Y-m-d-h-i-s").'.'.$extention;
//判断临时文件是否上传
if(is_uploaded_file($fileInfo['tmp_name'][$i])){
move_uploaded_file($fileInfo['tmp_name'][$i],$filepath.'/'.$upfileName);
echo $fileName."上传成功.<br>";
}
}
// }
?>