PHP實現上傳文件的方法
1.表單上傳文件,用file字段
允許用戶上傳文件,在HTML表單的聲明中要加上一個上傳的屬性:
enctype = 'multipart/form-data'
表單的method必須是POST
表單選項MAX_FILE_SIZE隱藏域用于限制上傳文件大小,它必須放在文件表單元素前面,單位為字節。

上傳時,PHP收到關于該文件的信息數組,這些信息可以在$_FILES這個超級全局數組中找到。
如:上傳了一個“wenhui.jpg”的圖片數組值如下:
name "wenhui.jpg" 上傳時文件的名字
type “image/jpeg" 文件類型
tmp_name "/tmp/wenhui" 服務器端的臨時文件名
error 上傳錯誤的返回值
size 2045 文件實際大小
3.把臨時文件存儲到指定路徑,上傳文件就成功了,現在解決的就是如果存到指定路徑,如果路徑中文件夾不存在如何創建的方法;
bool mkdir ( string pathname [, int mode [, bool recursive [, resource context]]] )
嘗試新建一個由 pathname 指定的目錄。
注意也許想用八進制數指定模式,也就是說該數應以零打頭。模式也會被當前的 umask 修改,可以用 umask() 來改變。
注意: mode 在 Windows 下被忽略。自 PHP 4.2.0 起成為可選項。
默認的 mode 是 0777,意味著最大可能的訪問權。有關 mode 的更多信息請閱讀 chmod() 頁面。
1.首先 簡單說一下mkdir()與mkdirs()的區別,以及,is_dir和dirname():
mkdir() 只能在已經存在的目錄中創建創建文件夾(即父級必須有才行)。
mkdirs() 可以在不存在的目錄中創建文件夾。諸如:a\b,既可以創建多級目錄。
dirname() 是返回路徑中的目錄部分。
is_dir() 用于判斷給出的文件名是否是一個有效的目錄
2.大致流程為:
(1) 先用is_dir判斷是否已是一個文件夾,如果是則返回TRUE。如沒有(或者不是文件夾),則試著創建它,當然有可以父級不存在,那mkdir直接就創不成功,但也為不報錯,所以就用@來抑止報非致命錯誤。
(2)如果傳參數都不滿足條件,那么就進入第二個if語句,先是取得路徑中的目錄部分,當然有可能是不存在的多級父級,所以用了mkdirs()來先創建父級,如果成功(不成功返回FALSE),那么再用mkdir來創建最終的目錄了。
好了,以上就是第一種方案。
第二種
(說明:此方案代碼精簡,推薦使用)
function create_folders($dir) {
return is_dir($dir) or (create_folders(dirname($dir)) and mkdir($dir, 0777));
}



