首頁 > 後端開發 > PHP問題 > php如何實現圖片上傳功能

php如何實現圖片上傳功能

藏色散人
發布: 2023-03-04 18:56:01
原創
5380 人瀏覽過

php實作圖片上傳功能的方法:先建立儲存圖片的資料夾;然後建立HTML部分;接著建立「uploadHandler.php」檔案;最後將檔案的圖片格式與陣列中的元素進行比較並實現上傳即可。

php如何實現圖片上傳功能

推薦:《PHP影片教學

PHP 中的圖片上傳動作

  前端程式設計中,有時需要允許瀏覽者上傳某張圖片,這樣的功能我們可以透過PHP 來實現。

一. 建立儲存圖片的資料夾

  在這裡,我們建立資料夾「 file 」 來存放使用者上傳的圖片,此時資料夾是空的,資料夾建立位址可以自己選擇,但是最好建立在方便使用的位置。

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

  這裡我們使用了HTML 的form 表單標籤,以及表單中的

<input type="file">来选择图片文件
<input type="submit">来提交图片相关信息
登入後複製

程式碼如下:

<!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>
登入後複製

注意:

  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);  ?>
登入後複製

  那麼我們會印到一個對應的陣列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) // 图片大小
 } 
}
登入後複製

  在array 陣列下有一個元素["img"] ,而在["img"] 下是一個二維數組,這個二維數組有五個元素,分別為:name / type / tmp_name / error / size。

  透過這幾個屬性我們得到了一個圖片的基本訊息,下一步我們要透過對這幾個基本屬性進行判斷而將圖片存進資料夾。

2. 實際操作

  進行以下判斷:

error [有]:提示錯誤❌

error [無]:下一步✅

    ╙type[非img]:提示錯誤❌

    ╙type[img]:下一步✅

      #_222204422[142020202020202020202020202020]:改變錯誤。 #      ╙type[jpeg]:下一步✅

  如果滿足如上的判斷,那麼我們認為這張圖片是可以保存的。

  為避免圖片命名的重複,我們使用時間戳概念,拼接成一個新的檔案名,讓每張圖片的命名都是唯一的。

  且我們可以創建一個數組,數組內的元素是各種圖片格式,將文件的圖片格式與數組中的元素進行比較,不是我們認可的圖片格式將不予保存。

程式碼如下:

<?php
// 接收文件
var_dump($_FILES); // 区别于$_POST、$_GET
print_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"];
};
?>
登入後複製

四. 上傳圖片

  此時,如果各項都符合要求,那麼在file 資料夾內就存有了我們上傳的圖片。上傳成功!

以上是php如何實現圖片上傳功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板