网站经常有上传文件到服务器的需求,如下代码:
enctype="multipart/form-data"> //enctype 属性规定了在提交表单时要使用哪种内容类型。如果是二进制文件,必须使用 "multipart/form-data"。
Filename:
编写do_file.php来处理上传请求,$_FILES可以获取上传的文件,如代码:
/**
* $_FILES是php中存储各种与上传文件相关的信息,其他的数据还是要用$_POST去获取
* $_FILES['myfile']['name'] 其中的myfile为前台form表单提交过来的name,客户端及其文件的文件名,包括拓展名
* $_FILES['myfile']['size'] 上传文件的大小,单位为字节
* $_FILES['myfile']['tmp_name'] 文件上传成功后,在服务器端存储的临时文件名
* $_FILES['myfile']['error'] 文件上传产生的错误信息,0正常;1文件超出php规定大小;2文件超出html规定的大小;3文件只被部分上传;4文件没有被上传
*/
$fileMaxSize = 10001000; //允许最大的文件为10001000B
$allowType = array("jpg", "png", "gif", "jpeg", "ico");//允许的文件拓展名
/**
* php还提供is_uploaded_file(string filename)和move_uploaded_file(string filename, string destination)
* is_uploaded_file()函数用来检测指定的文件是否是上传的文件,注意这个函数的参数应该是$_FILES['myfile']['tmp_name'],而不是$_FILES['myfile']['name']
* move_uploaded_file()函数用来将临时目录里的上传文件,移动到指定的位置
*/
if(is_uploaded_file($_FILES['myfile']['tmp_name']))
{
$userFileNames = explode(".", $_FILES['myfile']['name']);
$userFileNameLast = array_pop($userFileNames);
if(!in_array($userFileNameLast, $allowType))
die("对不起,拓展名不正确");
if($_FILES['myfile']['size'] > $fileMaxSize)
die("对不起,文件过大");
$saveFileName = date("YmdHis").".".$userFileNameLast;
move_uploaded_file($_FILES['myfile']['tmp_name'], "/home/youthflies/work/workspace/php/test/".$saveFileName);
}
else
{
die("文件非法");
}
echo "上传成功";
?>