php实现文件上传功能
php.ini 与文件上传有关的配置:
post_max_size = 8M:表单允许的最大值 upload_max_filesize = 2M:允许上传的文件大小 upload_tmp_dir =F:\wamp\tmp:指定临时文件地址,如果不知道操作系统指定 file_uploads = On:是否允许文件上传 max_file_uploads = 20:允许同时上传20个文件
关于文件上传的注意事项:
1. 限制文件上传的大小(总不能多大都能上传) 2. 给上传的文件取一个唯一的文件名(防止重名覆盖) 3. 限制上传文件的类型(防止伪装后辍上传) 4. 最好分目录存储上传的文件(方便日后查找) 5. 方便日后使用上传功能,可以把上传功能封装到类中
html部分:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>文件上传</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="pic"> <input type="submit" name="" value="提交"> </form> </body> </html>
php部分:
<?php //print_r($_FILES); //文件存储位置 $destination = 'uploads/'; //限制上传文件大小 $maxsize = 500*1024; //500KB if ($_FILES['pic']['size'] > $maxsize) { echo '图片大小超出限制'; exit; } //分目录存储上传的文件 $sub_path = date('Ymd').'/'; if (!is_dir($destination.$sub_path)) { mkdir($destination.$sub_path,0777,true); } $destination .= $sub_path; //文件取一个唯一名字 $filename = uniqid('goods_',true); $ext = strrchr($_FILES['pic']['name'], '.'); $new_filename = $filename.$ext; $destination .= $new_filename; //允许上传的类型 $allow_type = array('image/jpeg','image/jpg','image/png','image/gif'); $true_type = $_FILES['pic']['type']; if (!in_array($true_type, $allow_type)) { echo '不支持该文件类型'; exit; } $finfo = new finfo(FILEINFO_MIME_TYPE); $type = $finfo->file($_FILES['pic']['tmp_name']); if (!in_array($type,$allow_type)) { echo '不支持该文件类型'; exit; } //移动文件 if (move_uploaded_file($_FILES['pic']['tmp_name'], $destination)) { echo '上传成功'.'<br>'; echo '图片路径:' . $sub_path.$new_filename; }else{ echo '上传失败'; } ?>

浙公网安备 33010602011771号