PHP实现文件上传
upload.php
><?php echo $_FILES['photoFile']['tmp_name']."<br>"; echo $_FILES['photoFile']['name']."<br>"; echo $_FILES['photoFile']['size']."<br>"; echo $_FILES['photoFile']['type']."<br>"; $type=$_FILES['photoFile']['type']; echo $type; if($type!="image/pjpeg" || $type!="image/jpg" || $type!="image/gif") {echo "上传文件类型错误";//exit(); } if(is_uploaded_file($_FILES['photoFile']['tmp_name'])) if(move_uploaded_file($_FILES[„photoFile‟][„tmp_name‟],$_SERVER[“DO CUMENT_ROOT”].“www\\ch5/files\\".$_FILES['photoFile']['name'])) echo "上传成功"; else echo "上传失败";?>
上传文件的函数
•move_uploaded_file(file,newloc) 函数将上传的文件 移动到新位置。若成功,则返回 true,否则返回 false。file:要移动的文件;newloc:移动的目标位置
•is_uploaded_file(file) 函数判断指定的文件是否是通 过 HTTP POST 上传的。是的话返回true,否则返回 false。
php.ini文件的设置
file_uploads on 是否允许通过HTTP上传文件的开关。默认为ON即 是开 upload_tmp_dir -- 文件上传至服务器上存储临时文件的地方,如果 没指定就会用系统默认的临时文件夹 upload_max_filesize 即允许上传文件大小的最大值。默认为2M post_max_size 指通过表单POST给PHP的所能接收的最大值,包括 表单里的所有值。默认为8M 如果要上传>8M的大体积文件,只设置上述四项还不一定能行的通。 还得继续设置下面的参数。
max_execution_time 每个PHP页面运行的最大时间值(秒),默认30秒 max_input_time 每个PHP页面接收数据所需的最大时间,默认60秒 memory_limit 每个PHP页面所吃掉的最大内存,默认8M
注意
文件上传到服务器上后,会被存放到某个 临时位置 脚本代码执行完毕前,这个临时文件会被 服务器删除 所以要保留上传文件,需要将其重命名或 移动
常见问题
不应该允许任何人上传文件,需要用户通 过身份验证 对上传文件进行重命名 基于Windows系统,把文件路径中的”\”改 为”\\”。 如果无法上传,查看php.ini中的配置信息 。
名字必须是MAX_FILE_SIZE 值的单位是Byte字节,针对个人的应用程序更改大小。
使用$_FILES超级全局数组获取上传 文件信息
假设表单的文件框名字为photoFile,则: $_FILES[„photoFile‟][„tmp_name‟]
文件在Web服务器中临时存储的位置
与文件上传有关的错误代码 值:0; 没有错误发生,文件上传成功。 值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值 。 值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定 的值。 值:3; 文件只有部分被上传。 值:4; 没有文件被上传。
$_FILES[„photoFile‟][„name‟]
客户端上传时的文件名
$_FILES[„photoFile‟][„size‟]
文件的大小,单位字节
$_FILES[„photoFile‟][„type‟]
文件的MIME类型,如text/plain、imag/gif等
$_FILES[„photoFile‟][„error‟]
课堂练习——上传照片
需要两个文件
uploadphoto.html:设计上传页面 upload.php:完成上传功能
uploadphoto.html
<form method="post" enctype="multipart/form-data" action="upload.php"> 请上传你的照片:<input type="file" name="photoFile"> <input type="hidden" name="MAX_FILE_SIZE" value="10240000"> <input type="submit" value="提交"> </form>
PHP实现HTTP文件上传
文件上传
使用HTTP协议将文件从客户端浏览器传递 到服务器。
文件上传的HTML表单要求
表单<form>的提交方式:method=post 表单<form>设置enctype=“multipart/form-data”属性 在表单中加入文件框<input type=“file” name=“xxx”> 在表单中必须有一个设置上传文件最大长度的隐藏 域。<input type=“hidden” name=“MAX_FILE_SIZE” value=“10000”>