您的位置:首页 > 编程语言 > PHP开发

PHP--规范化的文件上传

2016-04-13 18:02 706 查看
<form action="" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="300000"><!--表单隐藏域:MAX_FILE_SIZE,意思是接收文件的最大尺寸-->
<input type="file" name="up_picture">
<input type="submit" name="submit" value="提交">
</form>
<?php
if (!empty($_FILES['up_picture'])) {//判断上传内容是否为空
if ($_FILES['up_picture']['error'] > 0) {//判断上传错误信息
echo "上传错误:";
switch ($_FILES['up_picture']['error']) {
case 1:
echo "上传文件大小超出配置文件规定值";
break;
case 2:
echo "上传文件大小超出表单中的约定值";
break;
case 3:
echo "上传文件不全";
break;
case 4:
echo "没有上传文件";
break;
}
} else {
list($maintype, $subtype) = explode("/", $_FILES['up_picture']['type']);
if ($maintype != "image" || $subtype != "png") {
echo "上传文件格式不正确";
} else {
if (!is_dir("./upfile")) {//判断指定目录是否存在
mkdir("./upfile");//创建目录
}
$path = './upfile/' . time() . strtolower(strstr($_FILES['up_picture']['name'], "."));//定义上传文件名和存储位置
if (is_uploaded_file($_FILES['up_picture']['tmp_name'])) {//判断文件上传是否为HTTP POST上传
if (!move_uploaded_file($_FILES['up_picture']['tmp_name'],$path)) {//执行上传操作
echo "上传失败";
} else {
echo "文件:" . time() . strtolower(strstr($_FILES['up_picture']['name'], ".")) . "上传成功,大小为:" . $_FILES['up_picture']['size'] . "字节";
}
} else {
echo "上传文件:".$_FILES['up_picture']['name']."不合法";
}
}
}
}


注:

$_FILES
变量存储的是上传文件的相关信息,这些信息对于上传功能有很大的作用。该变量是一个二维数组。

保存的信息如下表

元素名称说明
$_FILES[filename][name]存储了上传文件的文件名,如test.txt,tu.jpg
$_FILES[filename][size]存储了文件大小,单位为字节
$_FILES[filename][tmp_name]文件上传时,首先在临时目录中被保存成一个临时文件。该变量为临时文件名。
$_FILES[filenam][type]上传文件的类型。
$_FILES[filename][error]存储了上传文件的结果。如果返回0,则说明文件上传成功。
UPLOAD_ERR_OK 值:0; 没有错误发生,文件上传成功

UPLOAD_ERR_INI_SIZE 值:1; 上传的文件超过了 php.ini 中 upload_max_filesize选项限制的值

UPLOAD_ERR_FORM_SIZE 值:2;上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值

UPLOAD_ERR_PARTIAL 值:3; 文件只有部分被上传

UPLOAD_ERR_NO_FILE 值:4;没有文件被上传, 值:5; 上传文件大小为0

如需了解详细的文件上传方法请浏览http://blog.csdn.net/qq_28602957/article/details/51106366
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PHP 文件上传