当前位置 : IT培训网 > PHP开发 > php教程 > php教程之PHP文件上传

php教程之PHP文件上传

时间:2016-11-29 10:21:54  来源:php培训网  作者:郑州IT培训网  已有:名学员访问该课程
php教程基础知识是每一个入门的小伙伴都必须好好学习的,打好根基才能盖起更高的大厦。今天,IT培训网小编给大家带来的是php上传表单。

  php教程基础知识是每一个入门的小伙伴都必须好好学习的,打好根基才能盖起更高的大厦。今天,IT培训网小编给大家带来的是php上传表单。

        创建一个文件上传表单

  允许用户从表单上传文件是非常有用的。请看下面这个供上传文件的 HTML 表单:

  <html>

  <head>

  <meta charset="utf-8">

  <title>IT培训网(itpxw.cn)</title>

  </head>

  <body>

  <form action="upload_file.php" method="post" enctype="multipart/form-data">

  <label for="file">文件名:</label>

  <input type="file" name="file" id="file"><br>

  <input type="submit" name="submit" value="提交">

  </form>

  </body>

  </html>

  将以上代码保存到 form.html 文件中。

  有关上面的 HTML 表单的一些注意项列举如下:

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

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

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

  创建上传脚本

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

  <?php

  if ($_FILES["file"]["error"] > 0)

  {

  echo "错误:" . $_FILES["file"]["error"] . "<br>";

  }

  else

  {

  echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";

  echo "文件类型: " . $_FILES["file"]["type"] . "<br>";

  echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";

  echo "文件临时存储的位置: " . $_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、.jpg、.png 文件,文件大小必须小于 200 kB:

  <?php

  // 允许上传的图片后缀

  $allowedExts = array("gif", "jpeg", "jpg", "png");

  $temp = explode(".", $_FILES["file"]["name"]);

  $extension = end($temp); // 获取文件后缀名

  if ((($_FILES["file"]["type"] == "image/gif")

  || ($_FILES["file"]["type"] == "image/jpeg")

  || ($_FILES["file"]["type"] == "image/jpg")

  || ($_FILES["file"]["type"] == "image/pjpeg")

  || ($_FILES["file"]["type"] == "image/x-png")

  || ($_FILES["file"]["type"] == "image/png"))

  && ($_FILES["file"]["size"] < 204800) // 小于 200 kb

  && in_array($extension, $allowedExts))

  {

  if ($_FILES["file"]["error"] > 0)

  {

  echo "错误:: " . $_FILES["file"]["error"] . "<br>";

  }

  else

  {

  echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";

  echo "文件类型: " . $_FILES["file"]["type"] . "<br>";

  echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";

  echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];

  }

  }

  else

  {

  echo "非法的文件格式";

  }

  ?>

  保存被上传的文件

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

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

  <?php

  // 允许上传的图片后缀

  $allowedExts = array("gif", "jpeg", "jpg", "png");

  $temp = explode(".", $_FILES["file"]["name"]);

  echo $_FILES["file"]["size"];

  $extension = end($temp); // 获取文件后缀名

  if ((($_FILES["file"]["type"] == "image/gif")

  || ($_FILES["file"]["type"] == "image/jpeg")

  || ($_FILES["file"]["type"] == "image/jpg")

  || ($_FILES["file"]["type"] == "image/pjpeg")

  || ($_FILES["file"]["type"] == "image/x-png")

  || ($_FILES["file"]["type"] == "image/png"))

  && ($_FILES["file"]["size"] < 204800) // 小于 200 kb

  && in_array($extension, $allowedExts))

  {

  if ($_FILES["file"]["error"] > 0)

  {

  echo "错误:: " . $_FILES["file"]["error"] . "<br>";

  }

  else

  {

  echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";

  echo "文件类型: " . $_FILES["file"]["type"] . "<br>";

  echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";

  echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . "<br>";

  // 判断当期目录下的 upload 目录是否存在该文件

  // 如果没有 upload 目录,你需要创建它,upload 目录权限为 777

  if (file_exists("upload/" . $_FILES["file"]["name"]))

  {

  echo $_FILES["file"]["name"] . " 文件已经存在。 ";

  }

  else

  {

  // 如果 upload 目录不存在该文件则将文件上传到 upload 目录下

  move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);

  echo "文件存储在: " . "upload/" . $_FILES["file"]["name"];

  }

  }

  }

  else

  {

  echo "非法的文件格式";

  }

  ?>

  上面的脚本检测了文件是否已存在,如果不存在,则把文件拷贝到名为 "upload" 的目录下。

php教程基础知识是每一个小伙伴都要好好学习的,今天,小编就先分享到这里,后续会继续跟大家分享php教程。

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
------分隔线----------------------------
PHP 教程
1、PHP 基础
1.1 PHP 简介
1.2 PHP 安装
1.3 PHP 语法
1.4 PHP 变量
1.5 PHP echo/print
1.6 PHP 数据类型
1.7 PHP 常量
1.8 PHP 字符串
1.9 PHP 运算符
1.10 PHP If...Else
1.11 PHP Switch
1.12 PHP 数组
1.13 PHP 数组排序
1.14 PHP 超级全局变量
1.15 PHP While 循环
1.16 PHP For 循环
1.17 PHP 函数
1.18 PHP 魔术变量
1.19 PHP 命名空间
1.20 PHP 面向对象
2、PHP 表单
2.1 PHP 表单
2.2 PHP 表单验证
2.3 PHP 表单 - 必需字段
2.4 PHP 表单 - 验证邮件和URL
2.5 PHP 完整表单实例
2.6 PHP $_GET 变量
2.7 PHP $_POST 变量
3、PHP 高级教程
3.1 PHP 多维数组
3.2 PHP 日期
3.3 PHP 包含
3.4 PHP 文件
3.5 PHP 文件上传
3.6 PHP Cookie
3.7 PHP Session
3.8 PHP E-mail
3.9 PHP 安全 E-mail
3.10 PHP Error
3.11 PHP 过滤器
3.12 PHP 高级过滤器
3.13 PHP JSON
4、PHP 7 新特性
4.1 PHP 7 新特性
5、PHP 数据库
5.1 PHP MySQL 简介
5.2 PHP MySQL 连接
5.3 PHP MySQL 创建数据库
5.4 PHP MySQL 创建数据表
5.5 PHP MySQL 插入数据
5.6 PHP MySQL 插入多条数据
5.7 PHP MySQL 预处理语句
5.8 PHP MySQL 读取数据
5.9 PHP MySQL Where
5.10 PHP MySQL Order By
5.11 PHP MySQL Update
5.12 PHP MySQL Delete
5.13 PHP ODBC
6、PHP XML
6.1 XML Expat Parser
6.2 XML DOM
6.3 XML SimpleXML
7、PHP 与 AJAX
7.1 AJAX 简介
7.2 AJAX 与PHP
7.3 AJAX 数据库
7.4 AJAX XML
7.5 AJAX 实时搜索
7.6 AJAX RSS Reader
7.7 AJAX 投票