實例:
1、創建文件upfile.php,代碼如下
//如果收到表單傳來的參數,則進行上傳處理,否則顯示表單
if(isset($_FILES[uploadinput])){
//建目錄函數,其中參數$directoryName最後沒有"/",
//要是有的話,以/打散為數組的時候,最後將會出現一個空值
function makeDirectory($directoryName) {
$directoryName = str_replace("\","/",$directoryName);
$dirNames = explode(/, $directoryName);
$total = count($dirNames) ;
$temp = ;
for($i=0; $i<$total; $i++) {
$temp .= $dirNames[$i]./;
if (!is_dir($temp)) {
$oldmask = umask(0);
if (!mkdir($temp, 0777)) exit("不能建立目錄 $temp");
umask($oldmask);
}
}
return true;
}
if($_FILES[uploadinput][name] <> ""){
//包含上傳文件類
require_once (class_upload.php);
//設置文件上傳目錄
$savePath = "upload";
//創建目錄
makeDirectory($savePath);
//允許的文件類型
$fileFormat = array(gif,jpg,jpge,png);
//文件大小限制,單位: Byte,1KB = 1000 Byte //2cto.com
//0 表示無限制,但受php.ini中upload_max_filesize設置影響
$maxSize = 0;
//覆蓋原有文件嗎? 0 不允許 1 允許
$overwrite = 0;
//初始化上傳類
$f = new clsUpload( $savePath, $fileFormat, $maxSize, $overwrite);
//如果想生成縮略圖,則調用成員函數 $f->setThumb();
//參數列表: setThumb($thumb, $thumbWidth = 0,$thumbHeight = 0)
//$thumb=1 表示要生成縮略圖,不調用時,其值為 0
//$thumbWidth 縮略圖寬,單位是像素(px),留空則使用默認值 130
//$thumbHeight 縮略圖高,單位是像素(px),留空則使用默認值 130
$f->setThumb(1);
//參數中的uploadinput是表單中上傳文件輸入框input的名字
//後面的0表示不更改文件名,若為1,則由系統生成隨機文件名
if (!$f->run(uploadinput,0)){
//通過$f->errmsg()只能得到最後一個出錯的信息,
//詳細的信息在$f->getInfo()中可以得到。
echo $f->errmsg()."
";
}
//上傳結果保存在數組returnArray中。//2cto.com
echo "
";
print_r($f->getInfo());
echo "
";
}
}else{
?>
Send this file:
2、創建文件class_upload.php,代碼如下
class clsUpload{
var $saveName;// 保存名
var $savePath;// 保存路徑
var $fileFormat = array(gif,jpg,doc,application/octet-stream);// 文件格式&MIME限定
var $overwrite = 0;// 覆蓋模式
var $maxSize = 0;// 文件最大字節
var $ext;// 文件擴展名
var $thumb = 0;// 是否生成縮略圖
var $thumbWidth = 130;// 縮略圖寬
var $thumbHeight = 130;// 縮略圖高
var $thumbPrefix = "_";// 縮略圖前綴
var $errno;// 錯誤代號
var $returnArray= array();// 所有文件的返回信息
var $returninfo= array();// 每個文件返回信息
// 構造函數
// @param $savePath 文件保存路徑
// @param $fileFormat 文件格式限制數組
// @param $maxSize 文件最大尺寸
// @param $overwriet 是否覆蓋 1 允許覆蓋 0 禁止覆蓋
function clsUpload($savePath, $fileFormat=,$maxSize = 0, $overwrite = 0) {
$this->setSavepath($savePath);
$this->setFileformat($fileFormat);
$this->setMaxsize($maxSize);
$this->setOverwrite($overwrite);
$this->setThumb($this->thumb, $this->thumbWidth,$this->thumbHeight);
$this->errno = 0;
}
// 上傳
// @param $fileInput 網頁Form(表單)中input的名稱
// @param $changeName 是否更改文件名
function run($fileInput,$changeName = 1){
if(isset($_FILES[$fileInput])){
$fileArr = $_FILES[$fileInput];
if(is_array($fileArr[name])){//上傳同文件域名稱多個文件
for($i = 0; $i < count($fileArr[name]); $i++){
$ar[tmp_name] = $fileArr[tmp_name][$i];
$ar[name] = $fileArr[name][$i];
$ar[type] = $fileArr[type][$i];
$ar[size] = $fileArr[size][$i];
$ar[error] = $fileArr[error][$i];
$this->getExt($ar[name]);//取得擴展名,賦給$this->ext,下次循環會更新
$this->setSavename($changeName == 1 ? : $ar[name]);//設置保存文件名
if($this->copyfile($ar)){
$this->returnArray[] = $this->returninfo;
}else{
$this->returninfo[error] = $this->errmsg();
$this->returnArray[] = $this->returninfo;
}
}
return $this->errno ? false : true;