开发中需要上传图片、音乐、视频等等,这种上传传递是二进制数据。
1.6.1 客户端上传文件文件域
<input type="file" name="image">表单的enctype属性
默认情况下,表单传递是字符流,不能传递二进制流,通过设置表单的enctype属性传递复合数据。
enctype属性的值有:
application/x-www-form-urlencoded:【默认】,表示传递的是带格式的文本数据。multipart/form-data:复合的表单数据(字符串,文件),文件上传必须设置此值text/plain:用于向服务器传递无格式的文本数据,主要用户电子邮件单词
multipart:复合 form-data:表单数组1.6.2 服务器接受文件超全局变量$_FILES是一个二维数组,用来保存客户端上传到服务器的文件信息。二维数组的行是文件域的名称,列有5个。 1、$_FILES[][‘name’]:上传的文件名 2、$_FILES[][‘type]:上传的类型,这个类型是MIME类型(image/jpeg、image/gif、image/png) 3、$_FILES[][‘size’]:文件的大小,以字节为单位 4、$_FILES[][‘tmp_name’]:文件上传时的临时文件 5、$_FILES[][‘error’]:错误编码(值有0、1、2、3、4、6、7)0表示正确
$_FILES[][‘error’]详解
值
错误描述
0
正确
1
文件大小超过了php.ini中允许的最大值 upload_max_filesize = 2M
2
文件大小超过了表单允许的最大值
3
只有部分文件上传
4
没有文件上传
6
找不到临时文件
7
文件写入失败
注意:MAX_FILE_SIZE必须在文件域的上面。
只要掌握的错误号:0和4
1.6.3 将上传文件移动到指定位置函数:
move_uploaded_file(临时地址,目标地址)代码
<body> <?php if(!empty($_POST)) { if($_FILES['face']['error']==0){ //上传正确 //文件上传 move_uploaded_file($_FILES['face']['tmp_name'],'./'.$_FILES['face']['name']); }else{ echo '上传有误'; echo '错误码:'.$_FILES['face']['error']; } } ?> <form method="post" action="" enctype='multipart/form-data'> <input type="file" name="face"> <input type="submit" name="button" value="上传"> </form> </body>小结:上传的同名的文件要给覆盖
1.6.4 与文件上传有关的配置post_max_size = 8M:表单允许的最大值
upload_max_filesize = 2M:允许上传的文件大小
upload_tmp_dir =F:wamptmp:指定临时文件地址,如果不知道操作系统指定
file_uploads = On:是否允许文件上传
max_file_uploads = 20:允许同时上传20个文件
---来自腾讯云社区的---cwl_java
微信扫一扫打赏
支付宝扫一扫打赏