php文件上传
1、服务器端配置
在进行文件上传时需要先配置一下服务器,开启文件上传、指定上传文件的max_size,上传的文件保存的临时目录等。因为文件是采用post方式进行上传的所以,需要修改一下post的大小
- 编辑php.ini
2、客户端页面
- 错误的方式
<!DOCTYPE html> <html> <head> <title>文件上传</title> </head> <body> <form action="test.php" method="post"> <input type="text" name="id"> <input type="file" name="sql"> <button type="submit">上传</button> </form> </body> </html>
上面的代码提交的服务器时是拿不到上传的文件的,我们先看看执行结果。 <?php print_r($_POST)?>;
我们在服务器只拿到了文件的名称,而并未得到文件的真的内容
- 正确的方式
<!DOCTYPE html> <html> <head> <title>文件上传</title> </head> <body> <form action="test.php" method="post" enctype="multipart/form-data"> <input type="text" name="id"> <input type="file" name="sql"> <button type="submit">上传</button> </form> </body> </html>
服务器端代码 <?php print_r($_POST); echo '<br>'; print_r($_FILES);
- 多文件上传
<!DOCTYPE html> <html> <head> <title>文件上传</title> </head> <body> <form action="test.php" method="post" enctype="multipart/form-data"> <input type="text" name="id"> <input type="file" name="sql[]"> <input type="file" name="sql[]"> <button type="submit">上传</button> </form> </body> </html>
服务器端代码不变,其执行结果为:
3、服务器文件上传
<?php //错误检查 if($_FILES['sql']['error'] > 0){ exit(0); } //文件大小检查 $maxSize = 5*1024*1024; if($_FILES['sql']['size'] > $maxSize){ exit(0); } //文件类型检测,以后缀名检测 $allowType = 'sql'; $arr = explode('.', $_FILES['sql']['name']); $hz = $arr[count($arr)-1]; if($hz != $allowType){ echo 'file type error'; exit(0); } $filepath = './uploads'; $randname=data('Y').data('m').data('d').data('H').data('i').data('s').rand(100, 999).$hz; //将文件从临时目录取出 if(is_uploaded_file($_FILES['sql']['tmp_name'])){ if(move_uploaded_file($_FILES['sql']['tmp_name'], './uploads/'.$_FILES['sql']['name'])) echo '上传成功'; else echo "上传失败"; }
注意上面这些代码是文件已经完全上传到服务器才执行的!