Author: 刘老师(Aaron Lau)
武汉长乐教育,武汉PHP培训课程,版权所有,转载请注明!
PHP中文件的上传
课程概要
- 表单的修改
- PHP处理上传部分
- 多个文件的上传
1. 表单的修改
<form enctype="multipart/form-data" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
<input type="file" name="file"/>
<input type="submit">
</form>
2. PHP处理上传部分
if ($_FILES['file']['error'] > 0) {
echo '上传错误: ';
switch ($_FILES['file']['error']) {
case 1:
echo '上传文件大小超出了PHP配置文件中的约定值:upload_max_filesize';
break;
case 2:
echo '上传文件大小超出了表单中的约定值:MAX_FILE_SIZE';
break;
case 3:
echo '文件只被部分上载';
break;
case 4:
echo '没有上传任何文件';
break;
}
//如果$_FILES['myfile']['error']大于0都是有错误,输出错误信息并退出程序
exit;
}
//获取上传文件的MIME类型中的主类型和子类型
// list($maintype, $subtype) = explode("/", $_FILES['file']['type']);
//
//限制为图片,如果用户修改了文件后缀,就判断不出来了
// if ($maintype != "image") {
// echo '问题: 只能上传图片。';
// //如果用户上传文本文件则退出程序
// exit;
// }
//安全的判断图片的方法
if (!getimagesize($_FILES['file']['tmp_name'])) {
echo '问题: 只能上传图片。';
exit;
}
//截取文件后缀名
$extension = strrchr($_FILES['file']['name'], '.');
//定义上传后的位置和新文件名
$dir = 'uploads/' . date('Y_m_d', time());
if (!is_dir($dir)) {
//递归建立目录
mkdir($dir, 0777, true);
}
$upfile = $dir . '/' . time() . '_' . rand(100000, 999999) . $extension;
//判断是否为上传文件
if (is_uploaded_file($_FILES['file']['tmp_name'])) {
//从移动文件
if (!move_uploaded_file($_FILES['file']['tmp_name'], $upfile)) {
echo '问题: 不能将文件移动到指定目录。';
exit;
}
} else {
echo '问题: 上传文件不是一个合法文件: ';
echo $_FILES['file']['name'];
exit;
}
//如果文件上传成功则输出
echo '文件' . $upfile . '上传成功,大小为' . $_FILES['file']['size'] . '!<br>';
3. 多个文件的上传
<html>
<head><title>文件上传</title></head>
<body>
<form action="mul_upload.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
选择文件1:<input type="file" name="myfile[]"><br>
选择文件2:<input type="file" name="myfile[]"><br>
选择文件3:<input type="file" name="myfile[]"><br>
<input type="submit" value="上传文件">
</form>
</body>
</html>
//打印三维数组$_FILES中的内容,查看一下存储上传文件的结构
print_r($_FILES);