首頁 > 後端開發 > PHP問題 > PHP如何將圖片上傳替換?

PHP如何將圖片上傳替換?

coldplay.xixi
發布: 2023-03-03 09:30:01
原創
2343 人瀏覽過

PHP將圖片上傳並替換的方法:先建立兩個檔案;然後需要一個隱藏網域來限制上傳檔案的最大長度;接著先判斷檔案類型是否為圖片格式,若是則上傳檔案;最後上傳文件到並替換指定文件即可。

PHP如何將圖片上傳替換?

PHP將圖片上傳並替換的方法:

首先建立兩個檔案: change.html 和change .php

change.html 檔案的表單程式碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<html>

<head>

<title>change file example.</title>

<meta charset="UTF-8">

</head>

<body>

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

<table border=0 cellspacing=0 cellpadding=0 align=center width="100%">

<tr>

<td width=55 height=20 align="center">

<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />

文件:

</td>

<td>

<input name="file" type="file" />

<input type="submit" name="submit" value="submit" />

</td>

</tr>

</table>

</form>

</body>

</html>

登入後複製

這裡有幾個要注意的地方,首先看這句話

1

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

登入後複製

這裡我們採用POST方法,個別瀏覽器也支援PUT方法,當然這需要對腳本進行修改,我並不建議這麼做。表單中必須設定enctype="multipart/form-data,這樣,伺服器就知道上傳檔案帶有常規表單信息,記住,這個是必須設定的。

此外還需要一個隱藏域來限制上傳檔案的最大長度:<input type="hidden" name="MAX_FILE_SIZE" value="2000000">,這裡name必須設定成MAX_FILE_SIZE# ,其值就是上傳檔案的最大長度,單位是B,這裡我限製成2M。

再看這句:

1

<input name="file" type="file"   value="浏览" >

登入後複製

type="file"說明了檔案類型,這樣一個基本的上傳文件介面就完成了,接下來講講如何用PHP來處理上傳的文件,此外你的php.ini中設定的上傳文件最大長度可能會影響到你的實際上傳,請根據實際情況修改,另PHP的上傳是先傳到暫存目錄,在移至指定目錄的;暫存目錄的可依需求修改,也可使用預設值。

以下為表單提交change.php檔案程式碼,來看看這個檔案都有什麼:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

<?php

header("content-type:text/html;charset=utf-8");

  

   

  

/**

* @param string $oldfile 需要更换的文件名(包含具体路径名)

*/

function changeFile($oldfile){

$newfile = $_FILES[&#39;file&#39;][&#39;name&#39;];//获取上传文件名

$fileclass = substr(strrchr($newfile, &#39;.&#39;), 1);//获取上传文件扩展名,做判断用

$type = array("jpg", "gif", "bmp", "jpeg", "png");//设置允许上传文件的类型

if(in_array(strtolower($fileclass), $type)){

if(file_exists($oldfile)){

unlink($oldfile);

}

  

if(is_uploaded_file($_FILES[&#39;file&#39;][&#39;tmp_name&#39;])){//必须通过 PHP 的 HTTP POST 上传机制所上传的

if(move_uploaded_file($_FILES[&#39;file&#39;][&#39;tmp_name&#39;], $oldfile)){

//输出图片预览

echo "<center>您的文件已经上传完毕 上传图片预览: </center><br><center><img src=&#39;$oldfile&#39;></center>";

}

}else{

echo "<center>上传失败,文件大于2M,请重新上传!</center>";

}

}else{

$text = implode(",", $type);

echo "<center>您只能上传以下类型文件:", $text, "</center><br>";

// echo "<script>alert(&#39;您只能上传以下类型文件:$text&#39;)</script>";

}

}

  

changeFile("./files/1.png");

登入後複製

剛看這些你可能有點暈~~,慢慢看,你就會發現其實這玩意SO EASY!!

先講下原理,程式以上傳圖片為例,先判斷文件類型是否為圖片格式,若是則上傳文件,接著上傳文件到並替換指定文件,成功上傳則輸出上傳的圖片預覽。這裡要對程式中一些函數作些解釋。

先看

1

substr(strrchr($newfile, &#39;.&#39;), 1)

登入後複製

strrchar()函數有什麼作用呢,我舉個例子大家就知道,例如一個圖片檔案pic.jpg,我們用strrchar()處理,strrchr(pic.jpg,'.'),它將返回.jpg,明白了嗎?該函數返回指定字元在該字串最後出現的位置後的字符字串。配合substr() 我們就可以取到jpg,這樣我們就得到了檔案的後綴名,來判斷上傳檔案是否符合指定格式。本程式把指定的格式放在一個陣列中,實際使用時可依需要新增。

接著,我們呼叫判斷檔案類型的函數,並將其轉換為小寫strtolower($_FILES['file']['name']),這裡有個很關鍵的東東$_FILES ,這是個超級全局數組,保存了需要處理的表單數據,如果開啟了register_globals,也可以直接訪問,但這是不安全的。看剛才那個上傳介面<input name="file" type="file">,根據這個表單名稱,我們可以得到很多資訊:

  • $_FILES[ 'file']['name']--   取得檔案名稱

  • $_FILES['file']['tmp_name']--得到暫時儲存位置

  • #$_FILES['file']['size']--得到檔案大小

  • #$_FILES['file']['type']--得到檔案MIME類型

得到這些訊息,就可以輕鬆判斷檔案的資訊了,是不是很方便? ^_^,接下來還有一些函數要了解,

  • file_exists()--判斷指定目錄是否存在,不存在我們當然無法上傳

  • #is_uploaded_file--判斷檔案是否已經透過HTTP POST上傳

  • #move_uploaded_file--將上傳檔案移至指定目錄

#成功上傳,我們就輸出預覽,否則輸出上傳失敗

##相關學習推薦:

PHP程式設計從入門到精通

以上是PHP如何將圖片上傳替換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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