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