PHP学习笔记之PHP文件上传(五)

来源:互联网 发布:平台软件开发合同 编辑:程序博客网 时间:2024/06/05 07:56

文件上传的相关配置

表单设置
  1. 设定表单数据的提交方式为POST
  2. 设定enctype属性值为:multipart/form-data
  3. 为了避免用户等待许久之后才发现上传文件太大,可以在表单中添加MAX_FILE_SIZE隐藏域,用过设置其value值可以限制上传文件的大小
//form表单数据以"post"方式传输到"file.uploads.php"页面<form action="file.uploads.php" method="post">    //上传文件标签    <input type="file" name="file">    //设置上传文件的最大值    <input type="hidden" name="MAX_FILE_SIZE" vale ="1024">    //提交标签    <input type="submit"></form>
PHP设置
  1. file_uploads是否允许通过HTTP上传文件,默认为ON
  2. upload_max_filesize允许上传文件大小的最大值,默认为2M,此指令必须小于post_max_size;
  3. upload_tmp_dir指定上传文件的临时存放路径,这个目录对于拥有此服务器进程的用户必须是可写的,如果未指定则使用系统默认值;
  4. post_max_size控制POST方式提交数据PHP所能接收的最大数据量

二. _FILES数组

  • $_FILES超全局变量作用是存储各种与上传文件有关的信息
  • $_FILES是一个二维数组,数组中共有五项
  • $_FILES["userfile"]["name"]上传文件的名称
  • $_FILES["userfile"]["type"]上传文件的类型
  • $_FILES["userfile"]["size"]上传文件的大小
  • $_FILES["userfile"]["tmp_name"]文件上传后在服务器端储存的临时文件名
  • $_FILES["userfile"]["error"]文件上传相关的错误代码

三.上传错误信息

$_FILES["userfile"]["error"]提供了在文件上传过程中出现的错误:

  • 1.UPLOAD_ERR_OK (value = 0)如果文件上传成功返回0;
  • 2.UPLOAD_ERR_INI_SIZE (value = 1)如果试图上传的文件大小超出了 uploadmaxfilesize指令指定的值,则返回1;
  • 3.UPLOAD_ERR_FORM_SIZE (value = 2)如果试图上传的文件大小超出了MAXFILESIZE指令(可能嵌入在HTML表单中)指定的值,则返回2;
  • 4.UPLOAD_ERR_PARTIAL (value = 3)如果文件没有完全上传,则返回3; 如网络出现错误,导致上传过程中断;
  • 5.UPLOAD_ERR_NO_FILE (value = 4)如果用户没有指定上传的文件就提交表单,则返回4;

四.文件上传函数

4-1.is_uploaded_file()

is_uploaded_file(filename)函数确定参数filename指定的文件是否使用HTTP POST上传,例如:

//获取上传文件的信息$file = $_FILES["file"];//输出该信息print_r($file);//判断上传的文件是否使用http post上传if(is_uploaded_file($file['tmp_name'])){    //是则负责上传文件    copy($file['tmp_name'],"test2.txt");}else{    //否则输出上传失败    echo"文件上传失败"}

4-2.move_uploaded_file()

move_uploaded_file(filename,url)作用是将上传文件从临时目录移动到url目标目录;虽然copy()也可以实现同样的功能,但move_uploaded_file(filename,url)还提供了一种额外的功能,它将检查由filename输入参数指定的文件确实是通过 http post 上传机制上传的,如果指定的文件并非上传文件,则移动失败,返回false

//获取上传文件信息$file = $_FILES["file"];//移动上传文件到目标目录,返回bool值$bol = move_uploaded_file($file["tmp_name"],"upload/".$file["name"]);if($bol){    //移动成功则输出"上传成功",并且使用javescript代码设置2秒跳转回原来上传的页面    echo "上传成功<script>setTimeout(function(){location.href='upload,html'},2000)";}else{    //失败则输出"上传失败"    echo "上传失败"}
0 0
原创粉丝点击