php知识点之php文件上传
1. 文件上传时需要的注意事项:
- HTNL表单部分:
- 上传文件时,传输方式必须是post方式
- 需要指定表单传输编码格式:enctype="multipart/form-data";
- PHP部分需要注意:
1. 如果有文件上传,那么上传的文件在PHP脚本中不能用$_POST来接收,必须用$_FILES来接收,其它内容依然用$_POST
2. php.ini配置文件中:upload_max_filesize = 2M 允许上传文件大小的最大值
3. upload_tmp_dir = "c:/wamp64/tmp" 文件上传的临时目录(也叫作垃圾目录,文件上传都会到这个文件夹
这是防止有人恶意上传病毒文件,上传到临时文件后如果没有用PHP脚本将这个文件移动走,这个文件会被从
临时文件删除,并且速度很快,可以用sleep()函数观察)
4. file_uploads = On 允许文件上传
5. max_file_uploads = 20 表示允许最大上传文件个数为20个
6. post_max_size = 8M 表示POST最大传输内容为8m
注意:upload_max_filesize 设置的值最大不能超过 post_max_size设置的值,因为upload_max_filesize是被
包含在post_max_size里面的
2. 表单传输账号密码
web上传文件通常为表单传输,普通的表单通过post和get进行传输,类似这样
<form action="file.php" method="post" enctype="multipart/form-data>
用户名:<input type="text" name="user">
密码:<input type="password" name="pwd">
上传文件:<input type="file" name="pic">
<input type="submit" value="登录">
</form>
使用以上表单的方式就能实现用post传输账号密码和上传的文件,在file.php文件里
var_dump($_POST['user']);
var_dump($POST['pwd']);
var_dump($_FILES);
值得注意的是接收文件的变量是$_FILES,而不是$_POST,$_POST是接收不到文件上传的信息的
array (size=1)
'pic' =>
array (size=5)
'name' => string 'peng.jpg' (length=8)
'type' => string 'image/jpeg' (length=10)
'tmp_name' => string 'C:\wamp64\tmp\php56C1.tmp' (length=25)
'error' => int 0
'size' => int 61204
3.关于错误码
不同的情况会返回不同的错误码
var_dump($_FILES['pic']['error']);
|