国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP圖片上傳實例分析

2024-09-04 11:45:08
字體:
來源:轉載
供稿:網友

圖片上傳與文件上傳在php中都是一樣直接使用move_uploaded_file($_FILES["filename"]["tmp_name"]就可以實現了,下面我來給大家分享一個站長分享文件上傳例子.

前期需要了解的知識點:

move_uploaded_file()文件上傳函數,代碼如下:

  1. if(move_uploaded_file($_FILES["filename"]["tmp_name"]) 
  2. echo '文件上傳成功'

$_FILES php全局變量

$_FILES:經由 HTTP POST 文件上傳而提交至腳本的變量,類似于舊數組 $HTTP_POST_FILES 數組,依然有效,但反對使用,代碼如下:

$_FILES['myFile']['name']   客戶端文件的原名稱。

$_FILES['myFile']['type']   文件的 MIME 類型,需要瀏覽器提供該信息的支持,例如"image/gif"。

$_FILES['myFile']['size']   已上傳文件的大小,單位為字節。

$_FILES['myFile']['tmp_name']   文件被上傳后在服務端儲存的臨時文件名,一般是系統默認??梢栽趐hp.ini的upload_tmp_dir 指定,但用 putenv() 函數設置是不起作用的。

$_FILES['myFile']['error']   和該文件上傳相關的錯誤代碼。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的說明:(它們在PHP3.0以后成了常量)

UPLOAD_ERR_OK      值:0; 沒有錯誤發生,文件上傳成功。

UPLOAD_ERR_INI_SIZE      值:1; 上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值。

UPLOAD_ERR_FORM_SIZE  值:2; 上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值。

UPLOAD_ERR_PARTIAL   值:3; 文件只有部分被上傳。

UPLOAD_ERR_NO_FILE   值:4; 沒有文件被上傳。    值:5; 上傳文件大小為0.

核心文件,upimg.htm,代碼如下:

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
  2. "http://www.w3.org/TR/html4/loose.dtd"
  3. <html> 
  4. <head> 
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"
  6. <title>上傳圖片</title> 
  7.  <script language="javascript"
  8.     function $(id){ 
  9.      return document.getElementById(id); 
  10.     } 
  11.     function ok(){ 
  12.  $("logoimg").src = $("filename").value; 
  13.     } 
  14. </script> 
  15. </head> 
  16. <body> 
  17. <table border="0" align="center" cellpadding="0" cellspacing="0">  
  18.   <tr>  
  19.     <td height="45" align="center" valign="middle"
  20.   <form action="uploadf.php?submit=1" method="post" enctype="multipart/form-data" name="form1"> 請選擇上傳的圖片  
  21.    <input type="file" name="filename" id="filename" onchange="ok()">  
  22.    <!-- MAX_FILE_SIZE must precede the file input field --> 
  23.    <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> 
  24.    <input type="submit" name="Submit" value="上傳">  
  25.   </form> 
  26.  </td>  
  27.   </tr>  
  28. </table>  
  29. <font color="red">注意:請上傳120*45像素的GIF或者jpg格式的logo圖片</font><br/> 
  30. logo預覽:<img id="logoimg" src="images/bg-02.gif"/> 
  31. </body> 
  32. </html> 
  33. uploadf.php 
  34. <?php  
  35. if(!emptyempty($_GET[submit]))  
  36. {  
  37.  $path="uploadfiles/pic/"//上傳路徑  
  38.  //echo $_FILES["filename"]["type"]; 
  39.  if(!file_exists($path))  
  40.  {  
  41.   //檢查是否有該文件夾,如果沒有就創建,并給予最高權限  
  42.   mkdir("$path", 0700);  
  43.  }//END IF  
  44.  
  45.  //允許上傳的文件格式  
  46.  $tp = array("image/gif","image/pjpeg","image/png");  
  47.  //檢查上傳文件是否在允許上傳的類型  
  48.  
  49.  if(!in_array($_FILES["filename"]["type"],$tp))  
  50.  {  
  51.   echo "格式不對";  
  52.   exit;  
  53.  }//END IF  
  54.  
  55.  if($_FILES["filename"]["name"])  
  56.  {  
  57.   $file1=$_FILES["filename"]["name"];  
  58.   $file2 = $path.time().$file1;  
  59.   $flag=1;  
  60.  }//END IF  
  61.  
  62.  if($flag$result=move_uploaded_file($_FILES["filename"]["tmp_name"],$file2);  
  63.  
  64.  //特別注意這里傳遞給move_uploaded_file的第一個參數為上傳到服務器上的臨時文件  
  65.  if($result)  
  66.  {  
  67.   //echo "上傳成功!".$file2;  
  68.   echo "<script language='javascript'>";  
  69.   echo "alert(\"上傳成功?。?/span>");";  
  70.   //echo " location='add_aaa.php?pname=$file2'";  
  71.   echo "</script>";  
  72.    
  73.   echo("<input type=\"button\" name=\"Submit\" value=\"確定\" onClick=\"window.opener.setFile('".$file2."');window.close();\">"); 
  74.   echo "圖片名稱:".$file2
  75.  }//END IF 
  76. else { 
  77.  echo "file is null!"
  78. ?> 

調用示例文件,testUpload.htm,代碼如下:

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
  2. "http://www.w3.org/TR/html4/loose.dtd"
  3. <html> 
  4. <head> 
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"
  6. <title>上傳圖片</title> 
  7.  <script> 
  8.   function setFile(f1){ 
  9.    document.frm.logoImg.value=f1; 
  10.      } 
  11.  </script> 
  12. </head> 
  13. <body> 
  14. <table border="0" align="center" cellpadding="0" cellspacing="0">  
  15.   <tr>  
  16.     <td height="45" align="center" valign="middle"
  17.   <form action="#" method="post"  name="frm"> 請選擇上傳的圖片  
  18.         <input name="regAd.logoImg" id="logoImg"   type="text" size="30"/> 
  19.     <label style="cursor:hand" onClick="window.open('upimg.htm','上傳圖片','height=200,width=400,top=200,left=200')">上傳圖片</label><br/> 
  20.   </form> 
  21.  </td>  
  22.   </tr>  
  23. </table> 
  24. </body> 
  25. </html> 

此程序不足之處分析,上傳預覽功能,代碼如下:

  1.  function $(id){ 
  2.     return document.getElementById(id); 
  3.    } 
  4.    function ok(){ 
  5. $("logoimg").src = $("filename").value; 
  6.    }//開源軟件:Vevb.com 

這段代碼其實就是一個雞肋了,在有一些瀏覽器下是不兼容了,但不會影響到圖片上傳功能.

程序安全:對于在上傳處我們并未進行數據大小限制與程序上傳文件類型進行限制,這樣可以利用它來上傳一些像php文件,這樣你的網站就不安全了.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通榆县| 于都县| 昆山市| 洪洞县| 车险| 常宁市| 阜康市| 离岛区| 永靖县| 那坡县| 五原县| 若羌县| 东宁县| 普洱| 常德市| 夏河县| 阿尔山市| 苍梧县| 镇宁| 成安县| 临城县| 邯郸市| 连南| 岢岚县| 宜兰市| 巩留县| 新源县| 喜德县| 定陶县| 嘉荫县| 石河子市| 平原县| 启东市| 余庆县| 德清县| 开化县| 沂水县| 东城区| 壤塘县| 和平县| 咸丰县|