支援多檔案上傳php檔案上傳代碼_PHP教程

來源:互聯網
上載者:User
我們下面是個檔案圖片上傳類,調用方法 upfile($path = "./", $format = "", $maxsize = 0, $over = 0) :建構函式 參數(儲存路徑,上傳格式,上傳最大位元組數,是否覆蓋同名檔案),如果你要上傳多檔案就foreach($_FILES as $key=>$val)再 $filear[] = $f->upload($key);//返回上傳後檔案名稱數組。

我們下面是個檔案圖片上傳類,調用方法 upfile($path = "./", $format = "", $maxsize = 0, $over = 0) :建構函式 參數(儲存路徑,上傳格式,上傳最大位元組數,是否覆蓋同名檔案),如果你要上傳多檔案就foreach($_files as $key=>$val)再 $filear[] = $f->upload($key);//返回上傳後檔案名稱數組。

*/

class upfile{
//上傳檔案資訊
var $filename;
// 儲存名
var $savename;
// 儲存路徑
var $savepath;
// 檔案格式限定,為空白時不限制格式
var $format = "";
// 覆蓋模式
var $overwrite = 0;
/* $overwrite = 0 時不覆蓋同名檔案
* $overwrite = 1 時覆蓋同名檔案
*/
//檔案最大位元組
var $maxsize = 210000000;
//副檔名
var $ext;

/* 建構函式
* $path 儲存路徑
* $format 檔案格式(用逗號分開)
* $maxsize 檔案最大限制,0為預設值
* $over 複蓋參數
*/
function upfile($path = "./", $format = "", $maxsize = 0, $over = 0){
if(!file_exists($path)){
$this->halt("指定的目錄[ ".$path." ]不存在。");
}

if(!is_writable($path)){
$this->halt("指定的目錄[ ".$path." ]不可寫。");
}
$path = str_replace("","/", $path);
$this->savepath = substr($path, -1) == "/" ? $path : $path."/";//儲存路徑

$this->overwrite = $over;//是否複蓋相同名字檔案
$this->maxsize = !$maxsize ? $this->maxsize : $maxsize;//檔案最大位元組
$this->format = $format;
}

/*
* 功能:檢測並組織檔案
* $form 檔案網域名稱稱
* $filename 上傳檔案儲存名稱,為空白或者上傳多個檔案時由系統自動產生名稱
* $filename = 1,並上傳多個同檔案網域名稱稱檔案時,則檔案儲存為原上傳檔案名稱。
*/
function upload($form, $filename = ""){
if(!isset($_files[$form])){
$this->halt("指定的檔案網域名稱稱不存在。");
}else{
$filear = $_files[$form];
}

if(is_array($filear["name"])){//上傳同檔案網域名稱稱多個檔案
$outfile = array();//返迴文件名稱數組
for($i = 0; $i < count($filear["name"]); $i++){
$ar["name"] = $filear["name"][$i];
$ar["tmp_name"] = $filear["tmp_name"][$i];
$ar["size"] = $filear["size"][$i];
$ar["error"] = $filear["error"][$i];

$this->getext($ar["name"]);//取得副檔名
$this->set_savename($filename == 1 ? $ar["name"] : "");//設定儲存檔案名稱
$outfile[] = $this->copyfile($ar);
}
return $outfile;
}else{//上傳單個檔案
$this->getext($filear["name"]);//取得副檔名
$this->set_savename($filename);//設定儲存檔案名稱
return $this->copyfile($filear);
}
return false;
}

/*
* 功能:檢測並複製上傳檔案
* $filear 上傳檔案資料數組
*/
function copyfile($filear){

if($filear["size"] > $this->maxsize){
$this->halt("上傳檔案 ".$filear["name"]." 大小超出系統限定值[".$this->maxsize." 位元組],不能上傳。");
}

if(!$this->overwrite && file_exists($this->savename)){
$this->halt($this->savename." 檔案名稱已經存在。");
}

if(!$this->chkext()){
$this->halt($this->ext." 檔案格式不允許上傳。");
}

if(!copy($filear["tmp_name"], $this->savepath.$this->savename)){
$errors = array(0=>"檔案上傳成功",
1=>"上傳的檔案超過了 php教程.ini 中 upload_max_filesize 選項限制的值。 ",
2=>"上傳檔案的大小超過了 html 表單中 max_file_size 選項指定的值。 ",
3=>"檔案只有部分被上傳。 ",
4=>"沒有檔案被上傳。 ");
$this->halt($errors[$filear["error"]]);
}else{
@unlink($filear["tmp_name"]);//刪除臨時檔案
return $this->savename;//返回上傳檔案名稱
}
}

/*
* 功能: 取得副檔名
* $filename 為檔案名稱
*/
function getext($filename){
if($filename == "") return;

$ext = explode(".", $filename);

$this->ext = $ext[count($ext)-1];
}

/*
* 功能:檢測檔案類型是否允許
*/
function chkext(){
if($this->format == "" || in_array(strtolower($this->ext), explode(",", strtolower($this->format)))) return true;
else return false;
}
/*
* 功能: 設定檔案儲存名
* $savename 儲存名,如果為空白,則系統自動產生一個隨機的檔案名稱
*/
function set_savename($savename = ""){
if ($savename == "") { // 如果未設定檔案名稱,則產生一個隨機檔案名稱
srand ((double) microtime() * 1000000);
$rnd = rand(100,999);
$name = date('u') + $rnd;
$name = $name.".".$this->ext;
} else {
$name = $savename;
}
$this->savename = $name;
}

/*
* 功能:錯誤提示
* $msg 為輸出資訊
*/
function halt($msg){
echo "注意:".$msg;
exit;
}

/*
*
*主要用來刪除已上傳的檔案,不返回
*參數$file :檔案路徑
*/

function delete_file($file)
{
if (file_exists($file))
{
$delete = chmod ($file, 0777);
$delete = unlink($file);
if(file_exists($file))
{
$filesys = eregi_replace("/","",$file);
$delete = system("del $filesys");
clearstatcache();
if(file_exists($file))
{
$delete = chmod ($file, 0777);
$delete = unlink($file);
$delete = system("del $filesys");
}
}
clearstatcache();
}
}


}

/*
使用方法

* 檔案上傳類
upfile($path = "./", $format = "", $maxsize = 0, $over = 0) :建構函式 參數(儲存路徑,上傳格式,上傳最大位元組數,是否覆蓋同名檔案)



* 執行個體:



//上傳單檔案
if(isset($_files["files"]))
{
$filear=array();
$filear = $f->upload("files");//返回上傳後檔案名稱
echo $filear;

}



//上傳多個不同檔案網域名稱稱檔案

if(isset($_files){
foreach($_files as $key=>$val)
$filear[] = $f->upload($key);//返回上傳後檔案名稱數組
}


*/

http://www.bkjia.com/PHPjc/631721.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/631721.htmlTechArticle我們下面是個檔案圖片上傳類,調用方法 upfile($path = "./", $format = "", $maxsize = 0, $over = 0) :建構函式 參數(儲存路徑,上傳格式,上傳最大字...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.