我们在开发网站的时候,经常会遇到需要制作文件上传功能,下面我们就为大家介绍一下php制作文件上传功能的详细步骤。

推荐教程:PHP视频教程

第一步:创建一个文件上传表单

  允许用户从表单上传文件是非常有用的。

  请看下面这个供上传文件的 HTML 表单:

<html>    <body>        <form action="upload_file.php" method="post"  enctype="multipart/form-data">            <label for="file">Filename:</label>            <input type="file" name="file" id="file" />             <br />            <input type="submit" name="submit" value="Submit" />        </form>    </body></html>

请留意如下有关此表单的信息:

  <form> 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。

  <input> 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。

  注释:允许用户上传文件是一个巨大的安全风险。请仅仅允许可信的用户执行文件上传操作。

第二步:创建上传脚本

  "upload_file.php" 文件含有供上传文件的代码:

<?phpif ($_FILES["file"]["error"] > 0)  {  echo "Error: " . $_FILES["file"]["error"] . "<br />";  }else  {  echo "Upload: " . $_FILES["file"]["name"] . "<br />";  echo "Type: " . $_FILES["file"]["type"] . "<br />";  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";  echo "Stored in: " . $_FILES["file"]["tmp_name"];  }?>

  通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。

  第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样:

    ●$_FILES["file"]["name"] - 被上传文件的名称

    ●$_FILES["file"]["type"] - 被上传文件的类型

    ●$_FILES["file"]["size"] - 被上传文件的大小,以字节计

    ●$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称

    ●$_FILES["file"]["error"] - 由文件上传导致的错误代码

  这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制。

第三步:上传限制

  在这个脚本中,我们增加了对文件上传的限制。用户只能上传 .gif 或 .jpeg 文件,文件大小必须小于 20 kb:

<?phpif ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg")|| ($_FILES["file"]["type"] == "image/pjpeg"))&& ($_FILES["file"]["size"] < 20000))  {  if ($_FILES["file"]["error"] > 0)    {    echo "Error: " . $_FILES["file"]["error"] . "<br />";    }  else    {    echo "Upload: " . $_FILES["file"]["name"] . "<br />";    echo "Type: " . $_FILES["file"]["type"] . "<br />";    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";    echo "Stored in: " . $_FILES["file"]["tmp_name"];    }  }else  {  echo "Invalid file";  }?>

  注释:对于 IE,识别 jpg 文件的类型必须是 pjpeg,对于 FireFox,必须是 jpeg。

第四步:保存被上传的文件

  上面的例子在服务器的 PHP 临时文件夹创建了一个被上传文件的临时副本。

  这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:

<?phpif ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg")|| ($_FILES["file"]["type"] == "image/pjpeg"))&& ($_FILES["file"]["size"] < 20000))  {  if ($_FILES["file"]["error"] > 0)    {    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";    }  else    {    echo "Upload: " . $_FILES["file"]["name"] . "<br />";    echo "Type: " . $_FILES["file"]["type"] . "<br />";    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";    if (file_exists("upload/" . $_FILES["file"]["name"]))      {      echo $_FILES["file"]["name"] . " already exists. ";      }    else      {      move_uploaded_file($_FILES["file"]["tmp_name"],      "upload/" . $_FILES["file"]["name"]);      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];      }    }  }else  {  echo "Invalid file";  }?>

  上面的脚本检测了是否已存在此文件,如果不存在,则把文件拷贝到指定的文件夹。

  注释:这个例子把文件保存到了名为 "upload" 的新文件夹。

更多相关文章

  1. php如何获取上传文件大小
  2. php引入文件的四个方法
  3. PHP实时生成并下载超大数据量的EXCEL文件
  4. form表单在PHP中的实现方式
  5. PHP实现文件上传下载实例详细讲解
  6. php怎么启动exe文件
  7. PHP高性能Excel扩展1.2.8发布,文件读取数据类型可控!
  8. PHP 中使用 TUS 协议来实现大文件的断点续传
  9. php上传文件失败

随机推荐

  1. Android JNI 机制
  2. Android 自定义URL Scheme
  3. fanfou(饭否) android客户端 代码学习3
  4. 学习Android(安卓)Opengles 做游戏引擎笔
  5. Google Android 2.0初期版本亮相 支持手
  6. Android之——史上最简单最酷炫的3D图片
  7. Android UI学习总结
  8. xmlns:android="http://schemas.android.
  9. 使用VirtualBox在PC上安装Android OS
  10. Android学习感想一