前端:
<html> <head><title>upload file</title> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> </head> <body> <form action="uploadtest.php" method="post" enctype="multipart/form-data"> <!-- name必须是MAX_FILE_SIZE,value是字节数 --> <input type="hidden" name="MAX_FILE_SIZE" value="2097152"/> <!-- accept是文件的MIME类型 --> <input type="file" name="fileName" accept="image/jpeg,image/gif,image/png,application/x-MS-bmp,text/plain,text/html" /> <input type="submit" value="上传文件"/> </form> </body> </html>
上传文件的函数:
<?php header(‘content-type:text/html;charset=utf-8‘); function uploadFile($file,$uploadpath=‘upload‘,$extarray=[‘jpg‘,‘jpeg‘,‘gif‘,‘png‘,‘bmp‘],$max=2097152,$flag=false){ //[email protected]$_FILES[‘fileName‘]; //var_dump($file); //$max=2097152; //加入到参数中,默认2M //由于客户端限制靠不住,所以也要在服务端进行限制。 //限制文件的大小; if ($file[‘size‘]>$max) { exit(‘文件过大,不能上传。‘); # code... } if ($file[‘error‘]!==0) { switch($file[‘error‘]){ case 1: $errmsg= "上传文件超过了php.ini中upload_max_filesize选项限制的值。"; break; case 2: $errmsg= "上传文件的大小超过了HTML表单中max_file_size选项指定的值。"; # code... break; case 3: $errmsg= "文件只有部分被上传"; # code... break; case 4: $errmsg= "没有文件被上传"; # code... break; case 6: $errmsg= "找不到临时文件夹。"; # code... break; case 7: case 8: $errmsg= "系统出错"; # code... break; } exit($errmsg); # code... }else{ //判断是否是通过HTTPPost上传 if (!is_uploaded_file($file[‘tmp_name‘])) { exit(‘不是通过HTTP Post上传‘); # code... } //判断文件格式 //也可以用 pathinfo($file[‘name‘],PATHINFO_EXTENSION); $ext[email protected]strtolower(end(explode(‘.‘, $file[‘name‘]))); //$extarray=[‘jpg‘,‘jpeg‘,‘gif‘,‘png‘,‘bmp‘];//加入到数组中,定制文件类型 if (!in_array($ext, $extarray)) { exit(‘文件格式错误‘); # code... } //判断是否是真正的图片 if($flag===true){ if (@!getimagesize($file[‘tmp_name‘])) { exit(‘不是真正的图片‘); # code... } } //指定上传目录 //$uploadpath=‘upload‘;//加入到参数中 默认值为‘upload‘ //判断文件是否存在 if (!file_exists($uploadpath)) { mkdir($uploadpath,0777,true); chmod($uploadpath, 0777); # code... } //确保每个上传的文件有唯一的名字 $newname=md5(uniqid(microtime(true),true)).‘.‘.$ext; $pathname=$uploadpath.‘/‘.$newname; if (move_uploaded_file($file[‘tmp_name‘], $pathname)) { // exit(‘上传成功‘); // # code... return $pathname; } } } ?>
使用函数:
<?php include(‘upload.func.php‘); $file=$_FILES[‘fileName‘]; $new=uploadFile($file,‘lijian‘,$extarray=[‘txt‘,‘html‘]); echo $new;
时间: 2024-10-26 17:37:40