線上書籍

Home

[981]PHP入門+XOOPS模組設計

一、用PHP上傳檔案

1.若表單中有file元件(用來上傳的元件),其表單編碼(enctype)一定要加上:「enctype="multipart/form-data"」。
2.記得建立一個資料夾,例如:contact_upload
3.每上傳一張圖(假設file欄位名稱為pic),都會產生一組 $_FILES 超級全域變數:
(1) $_FILES['pic']['name']:上傳檔案原始名稱。
(2) $_FILES['pic']['type']:檔案的 MIME 類型,例如“image/gif”。
(3) $_FILES['pic']['size']:已上傳檔案的大小,單位為bytes。
(4) $_FILES['pic']['tmp_name']:檔案被上傳後的臨時檔案名。
(5) $_FILES['pic']['error']:和該檔案上傳相關的錯誤代碼。
4.上傳的步驟:送出上傳→圖會暫時放到tmp中→程式要搬移該檔到指定的位置。
5.搬移上傳檔方法:move_uploaded_file(暫存檔 , 新路徑檔名)

二、用class.upload.php來上傳檔案

1.這是一個人家寫好的上傳物件,操作簡單,功能強大!強烈建議使用。
2.手冊:http://www.verot.net/res/sources/class.upload.html

<?
include('class/upload/class.upload.php');

$old_file=_UPLOAD_DIR."/{$sn}.png";
if(file_exists($old_file)){
  unlink($old_file);
}

$img_handle = new upload($_FILES['pic'],"zh_TW");
if ($img_handle->uploaded) {
  $img_handle->file_safe_name = false;
  $img_handle->file_overwrite  = true;
  $img_handle->file_new_name_body   = $sn;
  $img_handle->image_convert = 'png';
  $img_handle->image_resize  = true;
  $img_handle->image_x  = 80;
  $img_handle->image_ratio_y  = true;
  $img_handle->process(_UPLOAD_DIR);
  if ($img_handle->processed) {
    $img_handle->clean();
  } else {
    die($img_handle->error);
  }
}
?>

//引入物件檔,路徑請自行修改

//舊檔路徑
//判斷是否已經有舊檔存在
//若存在,刪除該檔案


//將上傳物件實體化
//假如檔案已經上傳到tmp
//會把檔名的空白改為「_」
//強制覆寫相同檔名
//重新設定新檔名
//轉檔為png格式,方便管理
//要重設圖片大小
//設定寬度為80px
//按照比例縮放高度
//檔案搬移到目的地
//判斷搬移執行結果
//若搬移成功,則釋放記憶體
//否則
//秀出錯誤訊息。



3.include和include_once都是用來引入檔案,後者可避免重複引入,故建議用後者。引不到檔案會出現錯誤息,但程式不會停止。
4.require和require_once也是用來引入檔案,後者可避免重複引入,故建議用後者。引不到檔案會出現錯誤息,而且程式會停止執行。
5.define("常數名稱","值"):定義常數,常數通常前面會加上「_」並以大寫命名。
6.file_exists(檔案路徑):檢查檔是否存在
7.unlink(檔案路徑):刪除指定檔案
8.mkdir(目錄):建立資料夾