Php文件上傳類class.upload.php


簡介

Class.upload.php是用於管理上傳文件的php文件上傳類, 它可以幫助你快速的給自己的網站集成上傳文件功能。不僅如此,此分類還有一些列的處理功能,可以對上傳的文件或者本地的文件進行處理,其圖片處理功能比較 強大,包括圖片的縮放、旋轉、剪裁、類型轉換、應用濾鏡、添加邊框文字和水印等。支持的圖片類型是png、jpg、gif和bmp。

 

使用方法

首先我們要有一個用於提交上傳文件的表單,如下,注意表單要寫上enctype="multipart/form-data"。

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

   <input type="file" size="32" name="image_field" value="">

   <input type="submit" name="Submit" value="upload">

 </form>

 

然后創建表單處理腳本文件upload.php,在腳本中添加如下程序。含義請看注釋

$handle = new upload($_FILES[‘image_field’]);

//image_field是表單中上傳控件的name屬性,創建一個類的實例並用$_FILES[‘ image_field ‘]初始化,現在這個類已經知道你要處理哪個文件,並對文件的位置大小等信息了如指掌。

 

if ($handle->uploaded) {

//這個判斷是個安全選項,看一下這個文件真的是正規途徑過來的上傳文件嗎。

       $handle->file_new_name_body   = 'image_resized';//給這個文件起個名字吧, 注意這個是不帶擴展名的部分,如果有與之同名的文件,默認的行為是重命名。

       $handle->image_resize         = true;//我們傳了一張圖片,需要對它進行縮放,設置縮放屬性為true

       $handle->image_x                  = 100;//縮放要有標准,這里我們以寬度為基准,寬度必須是100像素

       $handle->image_ratio_y        = true;//你也可以指定一個具體的長度數值,寫法是$handle->image_y = [數值],這里是告訴程序以寬度為基准,高度按比例縮放。
  

       $handle->process('/home/user/files/');//在執行這句話之前,你還可以設定更多的處理選項,比如是否對圖 片進行旋轉剪裁,設定好了,就用這句話來執行圖片處理和上傳。圖片處理時會創建一個原圖片的副本,不會修改原始文件,原始文件存在於php的臨時文件夾 中,在linux服務器上可能是/tmp目錄。這樣你可以對同一張上傳的圖片進行多次處理,並指定上傳到不同的位置。這里'/home/user /files/'指定了文件要被復制到的位置。

       if ($handle->processed) {

           echo 'image resized';

           $handle->clean();//如果文件成功上傳,就清除掉這個對源文件的引用,此后將不能再對剛才上傳到臨時文件夾的圖片進行處理和復制了。

       } else {

           echo 'error : ' . $handle->error;

       }

   } 

  

如何直接下載圖片,如果你是做在線圖片處理程序,這個很有用。

$handle = new upload($_FILES[‘image_field’]);

header('Content-type: ' . $handle->file_src_mime);

header("Content-Disposition:attachment; filename=".rawurlencode($handle->file_src_name).";");

   echo $handle->Process(); 

 

如何將圖片直接輸出到瀏覽器

$handle = new upload($_FILES[‘image_field’]);

header('Content-type: ' . $handle->file_src_mime);

echo $handle->Process(); 

 

比較常用的處理參數,這些參數可以在調用$handle->process()之前設定處理方式

$handle->file_new_name_body = 'new name'

指定文件被上傳到指定位置后的名字,不包含擴展名的部分

$handle->file_new_name_ext = 'txt'

指定文件擴展名

$handle->mime_check = true;

指定是否對文件擴展名進行安全性檢查,默認是true,即進行檢查,注意這可能導致某些類型的文件無法上傳,比如.zip文件

$handle->allowed = array('application/pdf','application/msword', 'image/*');

指定允許上傳的文件mime類型

$handle->image_max_width = 200;

指定最大允許的圖片寬度,如果圖片超過此寬度將被視為不符合要求無法上傳,類似參數有$handle->image_max_height,,$handle->image_max_pixels,$handle->image_max_ratio等

 

在處理文件之前你可以讀取的文件信息

file_src_name:上傳文件的原始名稱,包括擴展名

file_src_name_body:原始名稱,不包括擴展名

file_src_name_ext:擴展名

file_src_pathname:文件完整的路徑和名稱

file_src_mime:mime類型

file_src_size: 文件大小

file_src_error: 上傳錯誤

file_is_image: 布爾類型,是否是圖片

 

如果文件是圖片,你還可以讀到

image_src_x,image_src_y,image_src_pixels,image_src_type,image_src_bits

 

文件處理了,也上傳了,能返回什么,這個也是很有用的,如果你要記錄文件信息到數據庫或者顯示給用戶的話。

file_dst_path:上傳后的文件路徑

file_dst_name_body: 上傳后的文件名,不包括擴展名

file_dst_name_ext:上傳后的文件擴展名

file_dst_name:上傳后的文件全名

file_dst_pathname:上傳后的文件完整的路徑和名稱

如果文件是圖片,你還可以讀到

image_dst_x,image_dst_y,image_convert

  

 

這個上傳類兼容php4.3以上版本,需要GD的支持,強烈推薦使用GD2

class.upload.php下載 >> upload.class.zip 已下載 985 次


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM