php上傳文件的增強(qiáng)函數(shù)
<?php
function upload($file,$path,$type){
$state = array();
$state['error'] = "true";
$alltype = ""; // 所有可以上傳的類(lèi)型,用"/"連接起來(lái)
$path = trim($path);
//為$path末尾加上"/"
if(strlen(strrchr($path,‘/‘)) <= 1){
$path .= "/";
}
//為類(lèi)型加上開(kāi)頭“.”
//將所有類(lèi)型合成字符串,用"/"連接起來(lái)<span id="more-78"></span>
foreach($type as $key=>$typeone){
$type[$key] = $typeone = trim($typeone);
if(strlen(strchr($typeone,".")) != strlen($typeone)){
$type[$key] = ".".$typeone;}
$alltype .= $typeone.‘/‘;
}
$alltype = substr($alltype,0,strlen($alltype)-1); //去掉最后的“/”
if(empty($file['name'])){
$state['error'] = "沒(méi)有上傳{$alltype}類(lèi)型文件!";
$state['errorid'] = 8;
return $state;
} else {
if (!$file['error']) {
$state['name'] = $file['name'];
$state['type'] = strrchr($state['name'],‘.‘);
if(in_array($state['type'],$type)){
$time = date("U");
$state['upname'] = $time.rand(1000,9999).$state['type']; //文件命名
if(copy($file['tmp_name'],$path.$state['upname'])){
$state['time'] = date("U"); //上傳的時(shí)間
$state['error'] = false;
return $state;
} else {
switch($file(‘error‘)){
case 1: $state['error'] = $state['name']."上傳失敗,文件大小超出了服務(wù)器的空間大??!";$state['errorid'] = 1;return $state;
case 2: $state['error'] = $state['name']."上傳失敗,要上傳的文件大小超出瀏覽器限制!";$state['errorid'] = 2;return $state;
case 3: $state['error'] = $state['name']."上傳失敗,文件僅部分被上傳!";$state['errorid'] = 3;return $state;
case 4: $state['error'] = $state['name']."上傳失敗,沒(méi)有找到要上傳的文件!";$state['errorid'] = 4;return $state;
case 5: $state['error'] = $state['name']."上傳失敗,服務(wù)器臨時(shí)文件夾丟失!";$state['errorid'] = 5;return $state;
case 6: $state['error'] = $state['name']."上傳失敗,文件寫(xiě)入到臨時(shí)文件夾出錯(cuò)!";$state['errorid'] = 6;return $state;
default: $state['error'] = $state['name']."上傳失敗,位置錯(cuò)誤!";$state['errorid'] = 10;return $state;
}
}
} else {
$state['error'] = $state['name']."上傳失敗!不符合所要上傳的文件類(lèi)型!({$alltype})";
$state['errorid'] = 10;
return $state;
}
}
}
?>
返回值為一數(shù)組
$key value
error 錯(cuò)誤詳情
errorid 錯(cuò)誤id(出現(xiàn)錯(cuò)誤才有值)
type 文件擴(kuò)展名(擴(kuò)展名前帶“.”)
upname 上傳的文件名
time 上傳的時(shí)間(從 Unix 紀(jì)元(1970-01-01 00:00)開(kāi)始至今的秒數(shù))
錯(cuò)誤類(lèi)型
errorid error
false //上傳成功
1 上傳失敗,文件大小超出了服務(wù)器的空間大小!
2 上傳失敗,要上傳的文件大小超出瀏覽器限制!
3 上傳失敗,文件僅部分被上傳!
4 上傳失敗,沒(méi)有找到要上傳的文件!
5 上傳失敗,服務(wù)器臨時(shí)文件夾丟失!
6 上傳失敗,文件寫(xiě)入到臨時(shí)文件夾出錯(cuò)!
8 沒(méi)有上傳該類(lèi)型文件! //表單中file對(duì)象為空
10 上傳失敗,位置錯(cuò)誤!
相關(guān)文章
PHP的時(shí)間戳與具體時(shí)間轉(zhuǎn)化的簡(jiǎn)單實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇PHP的時(shí)間戳與具體時(shí)間轉(zhuǎn)化的簡(jiǎn)單實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06PHP結(jié)合JQueryJcrop實(shí)現(xiàn)圖片裁切實(shí)例詳解
這篇文章主要介紹了PHP結(jié)合JQueryJcrop實(shí)現(xiàn)圖片裁切實(shí)例,非常實(shí)用的一個(gè)功能,需要的朋友可以參考下2014-07-07PHP實(shí)現(xiàn)上一篇下一篇的方法實(shí)例總結(jié)
這篇文章主要介紹了PHP實(shí)現(xiàn)上一篇下一篇的方法,結(jié)合實(shí)例形式總結(jié)分析了php獲取上一篇下一篇文章SQL操作的相關(guān)查詢(xún)技巧,需要的朋友可以參考下2016-09-09php中call_user_func函數(shù)使用注意事項(xiàng)
這篇文章主要介紹了php中call_user_func函數(shù)使用注意事項(xiàng),較為詳細(xì)的講述了call_user_func函數(shù)的用法實(shí)例與注意事項(xiàng),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-11-11PHP 數(shù)據(jù)結(jié)構(gòu) 算法描述 冒泡排序 bubble sort
多次循環(huán)進(jìn)行比較,每次比較時(shí)將最大數(shù)移動(dòng)到最上面。每次循環(huán)時(shí),找出剩余變量里的最大值,然后減小查詢(xún)范圍。這樣經(jīng)過(guò)多次循環(huán)以后,就完成了對(duì)這個(gè)數(shù)組的排序2011-07-07php curl上傳、下載、https登陸實(shí)現(xiàn)代碼
這篇文章主要介紹了php curl上傳、下載、https登陸實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-07-07PHP設(shè)計(jì)模式之 策略模式Strategy詳解【對(duì)象行為型】
這篇文章主要介紹了PHP設(shè)計(jì)模式之 策略模式Strategy,結(jié)合實(shí)例形式詳細(xì)分析了PHP基于對(duì)象行為型的策略模式Strategy具體原理、實(shí)現(xiàn)技巧與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2020-05-05詳解php 使用Callable Closure強(qiáng)制指定回調(diào)類(lèi)型
這篇文章主要介紹了詳解php 使用Callable Closure強(qiáng)制指定回調(diào)類(lèi)型的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-10-10