簡(jiǎn)介:Class.upload.php是用于管理上傳文件的php文件上傳類,它可以幫助你快速的給自己的網(wǎng)站集成上傳文件功能,不僅如此,此分類還有一些列的處理功能,可以對(duì)上傳的文件或者本地的文件進(jìn)行處理,其圖片處理功能比較 強(qiáng)大,包括圖片的縮放、旋轉(zhuǎn)、剪裁、類型轉(zhuǎn)換、應(yīng)用濾鏡、添加邊框文字和水印等,支持的圖片類型是png、jpg、gif和bmp.
使用方法:首先我們要有一個(gè)用于提交上傳文件的表單,如下,注意表單要寫(xiě)上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>
然后創(chuàng)建表單處理腳本文件upload.php,在腳本中添加如下程序,含義請(qǐng)看注釋,代碼如下:
- $handle = new upload($_FILES['image_field']);
image_field是表單中上傳控件的name屬性,創(chuàng)建一個(gè)類的實(shí)例并用$_FILES[' image_field ']初始化,現(xiàn)在這個(gè)類已經(jīng)知道你要處理哪個(gè)文件,并對(duì)文件的位置大小等信息了如指掌.
代碼如下:
- if ($handle->uploaded) {
- 個(gè)判斷是個(gè)安全選項(xiàng),看一下這個(gè)文件真的是正規(guī)途徑過(guò)來(lái)的上傳文件嗎.
- $handle->file_new_name_body = 'image_resized';//給這個(gè)文件起個(gè)名字吧, 注意這個(gè)是不帶擴(kuò)展名的部分,如果有與之同名的文件,默認(rèn)的行為是重命名。
- $handle->image_resize= true;//我們傳了一張圖片,需要對(duì)它進(jìn)行縮放,設(shè)置縮放屬性為true
- $handle->image_x= 100;//縮放要有標(biāo)準(zhǔn),這里我們以寬度為基準(zhǔn),寬度必須是100像素
- $handle->image_ratio_y= true;//你也可以指定一個(gè)具體的長(zhǎng)度數(shù)值,寫(xiě)法是$handle->image_y = [數(shù)值],這里是告訴程序以寬度為基準(zhǔn),高度按比例縮放。
- $handle->process('/home/user/files/');//在執(zhí)行這句話之前,你還可以設(shè)定更多的處理選項(xiàng),比如是否對(duì)圖 片進(jìn)行旋轉(zhuǎn)剪裁,設(shè)定好了,就用這句話來(lái)執(zhí)行圖片處理和上傳。圖片處理時(shí)會(huì)創(chuàng)建一個(gè)原圖片的副本,不會(huì)修改原始文件,原始文件存在于php的臨時(shí)文件夾 中,在linux服務(wù)器上可能是/tmp目錄。這樣你可以對(duì)同一張上傳的圖片進(jìn)行多次處理,并指定上傳到不同的位置。這里'/home/user /files/'指定了文件要被復(fù)制到的位置。
- if ($handle->processed) {
- echo 'image resized';
- $handle->clean();//如果文件成功上傳,就清除掉這個(gè)對(duì)源文件的引用,此后將不能再對(duì)剛才上傳到臨時(shí)文件夾的圖片進(jìn)行處理和復(fù)制了。
- } else {
- echo 'error : ' . $handle->error;
- }
- }
如何直接下載圖片,如果你是做在線圖片處理程序,這個(gè)很有用,代碼如下:
- $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();
比較常用的處理參數(shù),這些參數(shù)可以在調(diào)用$handle->process()之前設(shè)定處理方式,代碼如下:
$handle->file_new_name_body = 'new name'
指定文件被上傳到指定位置后的名字,不包含擴(kuò)展名的部分,代碼如下:
$handle->file_new_name_ext = 'txt'
指定文件擴(kuò)展名,代碼如下:
$handle->mime_check = true;
指定是否對(duì)文件擴(kuò)展名進(jìn)行安全性檢查,默認(rèn)是true,即進(jìn)行檢查,注意這可能導(dǎo)致某些類型的文件無(wú)法上傳,比如.zip文件,代碼如下:
$handle->allowed = array('application/pdf','application/msword', 'image/*');
指定允許上傳的文件mime類型,代碼如下:
$handle->image_max_width = 200;
指定最大允許的圖片寬度,如果圖片超過(guò)此寬度將被視為不符合要求無(wú)法上傳,類似參數(shù)有$handle->image_max_height,$handle->image_max_pixels,$handle->image_max_ratio等.
在處理文件之前你可以讀取的文件信息
file_src_name:上傳文件的原始名稱,包括擴(kuò)展名
file_src_name_body:原始名稱,不包括擴(kuò)展名
file_src_name_ext:擴(kuò)展名
file_src_pathname:文件完整的路徑和名稱
file_src_mime:mime類型
file_src_size:文件大小
file_src_error:上傳錯(cuò)誤
file_is_image:布爾類型,是否是圖片
如果文件是圖片,你還可以讀到
image_src_x,image_src_y,image_src_pixels,image_src_type,image_src_bits
文件處理了,也上傳了,能返回什么,這個(gè)也是很有用的,如果你要記錄文件信息到數(shù)據(jù)庫(kù)或者顯示給用戶的話.
file_dst_path:上傳后的文件路徑
file_dst_name_body:上傳后的文件名,不包括擴(kuò)展名
file_dst_name_ext:上傳后的文件擴(kuò)展名
file_dst_name:上傳后的文件全名
file_dst_pathname:上傳后的文件完整的路徑和名稱
如果文件是圖片,你還可以讀到
image_dst_x,image_dst_y,image_convert
新聞熱點(diǎn)
疑難解答