PHP文件上传

实现文件上传功能,需要用到一些专门用于上传文件的HTML语法

  1. 在<form>标记中,必须设置属性enctype=“multipart/form-data”,服务器可以知道上传的文件带有常规的表单信息
  2. 必须有一个可以设置上传文件最大长度的表单域
    <input type=“hidden” name=“MAX_FILE_SIZE” value=“1000000”>
    MAX_FILE_SIZE表单域是可选的,该值也可以在服务器端设置,如果在这个表单中使用,表单域的名称必须是MAX_FILE_SIZE。其值是允许上传文件的最大长度值(按字节计算)。
  3. 需要指定文件类型,name可自定义,PHP接收脚本中要使用该name访问文件

编写处理文件的PHP,当文件被上传时,该文件将被保存在临时文件中,这是通过php.ini文件的upload_tmp_dir指令设置的,如果没有设置该指令,在默认情况下,该目录是Web服务器上的主临时目录。如果在脚本执行完成之前不移动、复制或更改文件名称,该文件将被删除。
在PHP脚本中,需要处理的数据保存在超级全局变量数组$_FILES中(在HTML表单中file名称为file)。

  • $_FILES[“file”][“name”] - 被上传文件的名称
  • $_FILES[“file”][“type”] - 被上传文件的类型
  • $_FILES[“file”][“size”] - 被上传文件的字节大小
  • $_FILES[“file”][“tmp_name”] - 存储在服务器的文件的临时副本的名称
  • $_FILES[“file”][“error”] - 由文件上传导致的错误代码

$_FILES[“file”][“error”]中返回的错误代码。没哟个错误代码都有一个相应的错误常量。可能的常量和错误代码

  • UPLOAD_ERROR_OK,值为0,表示没有发生任何错误,上传成功
  • UPLOAD_ERR_INI_SIZE,值为1,表示上传文件的大小超出了约定值。文件大小的最大值在PHP配置文件中指定,该指令是upload_max_fliesize
  • UPLOAD_ERR_FORM_SIZE,值为2,表示上传文件大小超出了HTML表单的MAX_FILE_SiZE元素所指定的最大值
  • UPLOAD_ERR_PARTIAL,值为3,表示文件只被部分上传
  • UPLOAD_ERR_NO_FILE,值为4,表示没有上传任何文件
  • UPLOAD_NO_TMP_DIR,值为6,表示在php.ini文件中没有指定临时目录
  • UPLOAD_ERR_CANT_WRITE,值为7,表示将文件写入磁盘失败
  • UPLOAD_ERR_EXTENSION,值为8,表示上传文件被PHP扩展程序中断

实现简单的文件上传

HTML代码:

<html>
  <head>
    <meta charset="UTF-8">
    <title>文件上传</title>
  </head>
  <body>
    <form action="upload.php" method="post" enctype="multipart/form-data">
      <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
      <label for="userfile">上传文件:</label>
      <input type="file" name="myfile" id="myfile" /><br />
      <input type="submit" value="提交" />
    </form>
  </body>
</html>

upload.php脚本代码:

<? php

  if ($_FILES['myfile']['error'] == 0) {
  
    echo
    "文件上传成功!";
  
    //用户系统中文件名称
    $name = $_FILES['myfile']['name'];
  
    //文件的MIME类型
    $type = $_FILES['myfile']['type'];
  
    //文件在Web服务器中临时存储位置
    $tmp_name = $_FILES['myfile']['tmp_name'];
  
    //任何与文件上传相关的错误代码
    $error = $_FILES['myfile']['error'];
  
    //文件的字节大小
    $size = $_FILES['myfile']['size'];
  
    //将文件保存在upload的文件夹下
    move_uploaded_file($tmp_name, "upload/".$name);
  } else if ($_FILES['myfile']['error'] == 1) {
    //...
  } else if ($_FILES['myfile']['error'] == 2) {
    //...
  } else if ($_FILES['myfile']['error'] == 3) {
    //...
  } else if ($_FILES['myfile']['error'] == 4) {
    //...
  } else if ($_FILES['myfile']['error'] == 6) {
    //...
  } else if ($_FILES['myfile']['error'] == 7) {
    //...
  } else if ($_FILES['myfile']['error'] == 8) {
    //...
  }
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值