Home > Backend Development > PHP Tutorial > PHP 中的图片上传操作

PHP 中的图片上传操作

WBOY
Release: 2016-06-23 13:03:33
Original
1109 people have browsed it

  前端编程中,有时需要允许浏览者上传某张图片,这样的功能我们可以通过 PHP 来实现。

一. 创建存储图片的文件夹

  在这里,我们创建文件夹 “ file ” 来存放用户上传的图片,此时文件夹是空的,文件夹创建地址可以自己选择,但是最好建立在方便使用的位置。

二. 创建 HTML 部分(uploadfile.html)

  这里我们使用了 HTML 的 form 表单标签,以及表单中的

  • 来选择图片文件
  • 来提交图片相关信息

代码如下:

<!DOCTYPE html><html> <head>  <meta charset="UTF-8">  <title></title> </head> <body>   <form action="uploadHandler.php" method="post" enctype="multipart/form-data">   Upload Img:<input type="file" name="img"/>   <input type="submit" value="Upload"/>  </form> </body></html>
Copy after login

注意:  1. form 表单里的 action 连接到之后将会创建的处理图片上传的 .php 文件。  2. 在 form 的属性中必须注明enctype="multipart/form-data"。enctype 属性规定在将表单数据发送到服务器之前如何对其进行编码。multipart/form-data不对字符编码。当使用有文件上传控件的表单时,该值是必需的。  3. 在这里,我们使用的是 post 方法。

三.创建 PHP 部分(uploadHandler.php)

1. 原理

  我们创建一个 php 文件,在其中只输入

<?php var_dump($_FILES);  ?>
Copy after login

  那么我们会打印到一个相应的数组arr(1)。  arr(1)的数组结构为:

array(1) {  ["img"]=> array(5) {   ["name"]=> string(**) "AAAAAAA.jpg" // 图片名  ["type"]=> string(10) "image/jpeg" // 图片格式  ["tmp_name"]=> string(45) "/Applications/XAMPP/xamppfiles/temp/phpVZQY0m" // 图片缓存地址  ["error"]=> int(0) // 上传图片错误数  ["size"]=> int(124246) // 图片大小 } }
Copy after login

  在 array 数组下有一个元素 ["img"] ,而在 ["img"] 下是一个二维数组,这个二维数组有五个元素,分别为:name / type / tmp_name / error / size。  通过这几个属性我们得到了一个图片的基本信息,下一步我们要通过对这几个基本属性进行判断而将图片存进文件夹。

2. 实际操作

  进行如下判断:

  • error [有]:提示错误❌
  • error [无]:下一步✅    ╙type[非 img]:提示错误❌    ╙type[img]:下一步✅      ╙type[非 jpeg]:提示错误❌      ╙type[jpeg]:下一步✅

  如果满足如上的判断,那么我们认为这张图片是可以保存的。  为避免图片命名的重复,我们使用时间戳概念,拼接成一个新的文件名,让每张图片的命名都是唯一的。

  且我们可以创建一个数组,数组内的元素是各种图片格式,将文件的图片格式与数组中的元素进行比较,不是我们认可的图片格式将不予保存。

代码如下:

<?php// 接收文件var_dump($_FILES); // 区别于$_POST、$_GETprint_r($_FILES);$file = $_FILES["img"];// 先判断有没有错if ($file["error"] == 0) { // 成功  // 判断传输的文件是否是图片,类型是否合适 // 获取传输的文件类型 $typeArr = explode("/", $file["type"]); if($typeArr[0]== "image"){  // 如果是图片类型  $imgType = array("png","jpg","jpeg");  if(in_array($typeArr[1], $imgType)){ // 图片格式是数组中的一个   // 类型检查无误,保存到文件夹内   // 给图片定一个新名字 (使用时间戳,防止重复)   $imgname = "file/".time().".".$typeArr[1];   // 将上传的文件写入到文件夹中   // 参数1: 图片在服务器缓存的地址   // 参数2: 图片的目的地址(最终保存的位置)   // 最终会有一个布尔返回值   $bol = move_uploaded_file($file["tmp_name"], $imgname);   if($bol){    echo "上传成功!";   } else {    echo "上传失败!";   };  }; } else {  // 不是图片类型  echo "没有图片,再检查一下吧!"; };} else { // 失败 echo $file["error"];};?>
Copy after login

四. 上传图片

  此时,如果各项均符合要求,那么在 file 文件夹内就存有了我们上传的图片。上传成功!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template