php處理單檔案、多檔案上傳代碼分享_php技巧

來源:互聯網
上載者:User

php處理  單檔案、多檔案上傳執行個體代碼,供大家參考,具體內容如下 

幕後處理檔案submit_form_process.php 

<?php /******************************************************************************  參數說明: $max_file_size : 上傳檔案大小限制, 單位BYTE $destination_folder : 上傳檔案路徑 $watermark  : 是否附加浮水印(1為加浮水印,其他為不加浮水印);  使用說明: 1. 將PHP.INI檔案裡面的"extension=php_gd2.dll"一行前面的;號去掉,因為我們要用到GD庫; 2. 將extension_dir =改為你的php_gd2.dll所在目錄; ******************************************************************************/ //上傳檔案類型列表$uptypes=array(    'image/jpg',    'image/jpeg',    'image/png',    'image/pjpeg',    'image/gif',    'image/bmp',    'image/x-png'); $max_file_size=2*1024*1024;   //上傳檔案大小限制, 單位BYTE $destination_folder=get_stylesheet_directory().'/mytest/'; //上傳檔案路徑 $watermark=1;   //是否附加浮水印(1為加浮水印,其他為不加浮水印); $watertype=1;   //浮水印類型(1為文字,2為圖片) $waterposition=1;   //浮水印位置(1為左下角,2為右下角,3為左上方,4為右上方,5為置中); $waterstring="test"; //浮水印字串 $waterimg="xplore.gif";  //浮水印圖片 $imgpreview=1;   //是否產生預覽圖(1為產生,其他為不產生); $imgpreviewsize=1/2;  //縮圖比例 if ($_SERVER['REQUEST_METHOD'] == 'POST') {   $fileArray = $_FILES['upfile'];//擷取多個檔案的資訊,注意:這裡的鍵名不包含[]  print_r($fileArray);  echo "<br/>";  if (!is_uploaded_file($_FILES["upfile"]['tmp_name']))   //是否存在檔案   {      echo "圖片不存在!";      exit;   }   $file = $_FILES["upfile"];   if($max_file_size < $file["size"])   //檢查檔案大小   {     echo "檔案太大!";     exit;   }    if(!in_array($file["type"], $uptypes))   //檢查檔案類型   {     echo "檔案類型不符!".$file["type"];     exit;   }    if(!file_exists($destination_folder))   {     mkdir($destination_folder);   }   $filename=$file["tmp_name"];   $image_size = getimagesize($filename);   $pinfo=pathinfo($file["name"]);   $ftype=$pinfo['extension'];   $destination = $destination_folder.time().".".$ftype;   //$destination = $destination_folder.$file["name"];   if (file_exists($destination) && $overwrite != true)   {     echo "同名檔案已經存在了";     exit;   }   if(!move_uploaded_file ($filename, $destination))   {     echo "移動檔案出錯";     exit;   }     $pinfo=pathinfo($destination);   $fname=$pinfo[basename];   echo " <font color=red>已經成功上傳</font><br>檔案名稱: <font color=blue>".$destination_folder.$fname."</font><br>";   echo " 寬度:".$image_size[0];   echo " 長度:".$image_size[1];   echo "<br> 大小:".$file["size"]." bytes";      if($watermark==1)   {     $iinfo=getimagesize($destination,$iinfo);     $nimage=imagecreatetruecolor($image_size[0],$image_size[1]);     $white=imagecolorallocate($nimage,255,255,255);     $black=imagecolorallocate($nimage,0,0,0);     $red=imagecolorallocate($nimage,255,0,0);     imagefill($nimage,0,0,$white);     switch ($iinfo[2])     {       case 1:       $simage =imagecreatefromgif($destination);       break;       case 2:       $simage =imagecreatefromjpeg($destination);       break;       case 3:       $simage =imagecreatefrompng($destination);       break;       case 6:       $simage =imagecreatefromwbmp($destination);       break;       default:       die("不支援的檔案類型");       exit;     }      imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);     imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white);      switch($watertype)     {       case 1:  //加浮水印字串       imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black);       break;       case 2:  //加浮水印圖片       $simage1 =imagecreatefromgif("xplore.gif");       imagecopy($nimage,$simage1,0,0,0,0,85,15);       imagedestroy($simage1);       break;     }      switch ($iinfo[2])     {       case 1:       //imagegif($nimage, $destination);       imagejpeg($nimage, $destination);       break;       case 2:       imagejpeg($nimage, $destination);       break;       case 3:       imagepng($nimage, $destination);       break;       case 6:       imagewbmp($nimage, $destination);       //imagejpeg($nimage, $destination);       break;     }      //覆蓋原上傳檔案     imagedestroy($nimage);     imagedestroy($simage);   }    if($imgpreview==1)   {   echo "<br>圖片預覽:<br>";   echo "<img src=\"/wp-content/themes/HotNewspro/mytest/".$fname."\" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);   echo " alt=\"圖片預覽:\r檔案名稱:".$destination."\r上傳時間:\">";   }   } ?> 

前台頁面 

   <form enctype="multipart/form-data" method="post" name="upform"    action="submit_form_process.php">     <input name="testparas" value="test" type="text">     <input name="upfile" type="file" >      <input type="submit" value="上傳"><br>      允許上傳的檔案類型為:<?=implode(', ',$uptypes)?>     </form>  

注1:多圖片上傳跟單個圖片上傳的最大區別在於input中的name屬性的,一開始我的name只等於upfile,在伺服器端讀取 F ILES時只能讀到最後一個檔案,因為在伺服器端中 FILES時只能讀到最後一個檔案,因為在伺服器端中_FILES["file"]是我們上傳的檔案,當上傳多個檔案時,後面值的會覆蓋前面的值,所以只能讀到最後一個檔案。現在我們把它改稱upfile[],在伺服器讀取$_FILES["file"]時得到的便是一個數組,所以我就可以用上面遍曆的數組的方法來擷取上傳檔案的資訊。 
<input type="file" multiple="multiple" id="file" name="upfile[]">   

注2:也可以在前台頁面添加一個IFrame,使得form提交到此IFrame,後台服務回傳內容顯示到此處 

  <form enctype="multipart/form-data" method="post" name="upform" tatget="iframefile"    action="submit_form_process.php">     <input name="testparas" value="test" type="text">     <input name="upfile" type="file" >      <input type="submit" value="上傳"><br>      允許上傳的檔案類型為:<?=implode(', ',$uptypes)?>     </form>    <iframe name="iframefile" > 

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援雲棲社區。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.