婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > TP3.2.3框架文件上傳操作實例詳解

TP3.2.3框架文件上傳操作實例詳解

熱門標簽:河南電銷卡外呼系統哪家強 騰訊外呼管理系統 青島語音外呼系統招商 昭通辦理400電話 山西回撥外呼系統 岳陽外呼型呼叫中心系統在哪里 百應電話機器人服務 揚州地圖標注app 山西探意電話機器人

本文實例講述了TP3.2.3框架文件上傳操作。分享給大家供大家參考,具體如下:

上傳表單

在ThinkPHP中使用上傳功能無需進行特別處理。例如,下面是一個帶有附件上傳的表單提交:

form action="__URL__/upload" enctype="multipart/form-data" method="post" >
input type="text" name="name" />
input type="file" name="photo" />
input type="submit" value="提交" >
/form>

注意,要使用上傳功能 你的表單需要設置 enctype="multipart/form-data"

多文件上傳支持

如果需要使用多個文件上傳,只需要修改表單,把

input type='file' name='photo'>

改為

input type='file' name='photo1'>
input type='file' name='photo2'>
input type='file' name='photo3'>

或者

input type='file' name='photo[]'>
input type='file' name='photo[]'>
input type='file' name='photo[]'>

兩種方式的多附件上傳系統的文件上傳類都可以自動識別。

上傳操作

ThinkPHP文件上傳操作使用Think\Upload類,假設前面的表單提交到當前控制器的upload方法,我們來看下upload方法的實現代碼:

public function upload(){
$upload = new \Think\Upload();// 實例化上傳類
$upload->maxSize = 3145728 ;// 設置附件上傳大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 設置附件上傳類型
$upload->rootPath = './Uploads/'; // 設置附件上傳根目錄
$upload->savePath = ''; // 設置附件上傳(子)目錄
// 上傳文件
$info = $upload->upload();
if(!$info) {// 上傳錯誤提示錯誤信息
$this->error($upload->getError());
}else{// 上傳成功
$this->success('上傳成功!');
}
}

上傳類對圖片文件的上傳安全做了支持,如果企圖上傳非法的圖像文件,系統會提示 非法圖像文件。 為了更好的使用上傳功能,建議你的服務器開啟finfo模塊支持

上傳參數

在上傳操作之前,我們可以對上傳的屬性進行一些設置,Upload類支持的屬性設置包括:

屬性 描述
maxSize 文件上傳的最大文件大小(以字節為單位),0為不限大小
rootPath 文件上傳保存的根路徑
savePath 文件上傳的保存路徑(相對于根路徑)
saveName 上傳文件的保存規則,支持數組和字符串方式定義
saveExt 上傳文件的保存后綴,不設置的話使用原文件后綴
replace 存在同名文件是否是覆蓋,默認為false
exts 允許上傳的文件后綴(留空為不限制),使用數組或者逗號分隔的字符串設置,默認為空
mimes 允許上傳的文件類型(留空為不限制),使用數組或者逗號分隔的字符串設置,默認為空
autoSub 自動使用子目錄保存上傳文件 默認為true
subName 子目錄創建方式,采用數組或者字符串方式定義
hash 是否生成文件的hash編碼 默認為true
callback 檢測文件是否存在回調,如果存在返回文件信息數組

上面的屬性可以通過兩種方式傳入:

實例化傳入

我們可以在實例化的時候直接傳入參數數組,例如:

$config = array(
'maxSize' => 3145728,
'rootPath' => './Uploads/',
'savePath' => '',
'saveName' => array('uniqid',''),
'exts' => array('jpg', 'gif', 'png', 'jpeg'),
'autoSub' => true,
'subName' => array('date','Ymd'),
);
$upload = new \Think\Upload($config);// 實例化上傳類

關于saveName和subName的使用后面我們會有詳細的描述。

動態賦值

支持在實例化后動態賦值上傳參數,例如:

$upload = new \Think\Upload();// 實例化上傳類
$upload->maxSize = 3145728;
$upload->rootPath = './Uploads/';
$upload->savePath = '';
$upload->saveName = array('uniqid','');
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');
$upload->autoSub = true;
$upload->subName = array('date','Ymd');

上面的設置和實例化傳入的效果是一致的。

上傳文件信息

設置好上傳的參數后,就可以調用Think\Upload類的upload方法進行附件上傳,如果失敗,返回false,并且用getError方法獲取錯誤提示信息;如果上傳成功,就返回成功上傳的文件信息數組。

$upload = new \Think\Upload();// 實例化上傳類
$upload->maxSize = 3145728 ;// 設置附件上傳大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 設置附件上傳類型
$upload->rootPath = './Uploads/'; // 設置附件上傳根目錄
$upload->savePath = ''; // 設置附件上傳(子)目錄
// 上傳文件
$info = $upload->upload();
if(!$info) {// 上傳錯誤提示錯誤信息
$this->error($upload->getError());
}else{// 上傳成功 獲取上傳文件信息
foreach($info as $file){
echo $file['savepath'].$file['savename'];
}
}

每個文件信息又是一個記錄了下面信息的數組,包括:

屬性 描述
key 附件上傳的表單名稱
savepath 上傳文件的保存路徑
name 上傳文件的原始名稱
savename 上傳文件的保存名稱
size 上傳文件的大小
type 上傳文件的MIME類型
ext 上傳文件的后綴類型
md5 上傳文件的md5哈希驗證字符串 僅當hash設置開啟后有效
sha1 上傳文件的sha1哈希驗證字符串 僅當hash設置開啟后有效

文件上傳成功后,就可以使用這些文件信息來進行其他的數據操作,例如保存到當前數據表或者單獨的附件數據表。

例如,下面表示把上傳信息保存到數據表的字段:

$model = M('Photo');
// 取得成功上傳的文件信息
$info = $upload->upload();
// 保存當前數據對象
$data['photo'] = $info[0]['savename'];
$data['create_time'] = NOW_TIME;
$model->add($data);

單文件上傳

upload方法支持多文件上傳,有時候,我們只需要上傳一個文件,就可以使用Upload類提供的uploadOne方法上傳單個文件,例如:

public function upload(){
$upload = new \Think\Upload();// 實例化上傳類
$upload->maxSize = 3145728 ;// 設置附件上傳大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 設置附件上傳類型
$upload->rootPath = './Uploads/'; // 設置附件上傳根目錄
// 上傳單個文件
$info = $upload->uploadOne($_FILES['photo1']);
if(!$info) {// 上傳錯誤提示錯誤信息
$this->error($upload->getError());
}else{// 上傳成功 獲取上傳文件信息
echo $info['savepath'].$info['savename'];
}
}

uploadOne方法上傳成功后返回的文件信息和upload方法的區別是只有單個文件信息的一維數組。

上傳文件的命名規則

上傳文件的命名規則(saveName)用于確保文件不會產生沖突或者覆蓋的情況。命名規則的定義可以根據你的業務邏輯來調整,不是固定的。例如,如果你采用時間戳的方式來定義命名規范,那么在同時上傳多個文件的時候可能產生沖突(因為同一秒內可以上傳多個文件),因此你需要根據你的業務需求來設置合適的上傳命名規則。這里順便來說下saveName參數的具體用法。

一、采用函數方式

如果傳入的字符串是一個函數名,那么表示采用函數動態生成上傳文件名(不包括文件后綴),例如:

// 采用時間戳命名
$upload->saveName = 'time';
// 采用GUID序列命名
$upload->saveName = 'com_create_guid';

也可以采用用戶自定義函數

// 采用自定義函數命名
$upload->saveName = 'myfun';

默認的命名規則設置是采用uniqid函數生成一個唯一的字符串序列。

saveName的值支持數組和字符串兩種方式,如果是只有一個參數或者沒有參數的函數,直接使用字符串設置即可,如果需要傳入額外的參數,可以使用數組方式,例如:

// 采用date函數生成命名規則 傳入Y-m-d參數
$upload->saveName = array('date','Y-m-d');
// 如果有多個參數需要傳入的話 可以使用數組
$upload->saveName = array('myFun',array('__FILE__','val1','val2'));

如果需要使用上傳的原始文件名,可以采用__FILE__傳入,所以上面的定義規則,最終的結果是 myFun('上傳文件名','val1','val2')執行的結果。

二、直接設置上傳文件名

如果傳入的參數不是一個函數名,那么就會直接當做是上傳文件名,例如:

$upload->saveName = time().'_'.mt_rand();

表示上傳的文件命名采用時間戳加一個隨機數的組合字符串方式。

當然,如果覺得有必要,你還可以固定設置一個上傳文件的命名規則,用于固定保存某個上傳文件。

$upload->saveName = 'ThinkPHP';

三、保持上傳文件名不變

如果你想保持上傳的文件名不變,那么只需要設置命名規范為空即可,例如:

$upload->saveName = '';

一般來說不建議保持不變,因為會導致相同的文件名上傳后被覆蓋的情況。

子目錄保存

saveName只是用于設置文件的保存規則,不涉及到目錄,如果希望對上傳的文件分子目錄保存,可以設置autoSub和subName參數來完成,例如:

// 開啟子目錄保存 并以日期(格式為Ymd)為子目錄
$upload->autoSub = true;
$upload->subName = array('date','Ymd');

可以使用自定義函數來保存,例如:

// 開啟子目錄保存 并調用自定義函數get_user_id生成子目錄
$upload->autoSub = true;
$upload->subName = 'get_user_id';

和saveName參數一樣,subName的定義可以采用數組和字符串的方式。

注意:如果get_user_id函數未定義的話,會直接以get_user_id字符串作為子目錄的名稱保存。

子目錄保存和文件命名規則可以結合使用。

上傳驅動

上傳類可以支持不同的環境,通過相應的上傳驅動來解決,默認情況下使用本地(Local)上傳驅動,當然,你還可以設置當前默認的上傳驅動類型,例如:

'FILE_UPLOAD_TYPE' => 'Ftp',
'UPLOAD_TYPE_CONFIG' => array(
'host' => '192.168.1.200', //服務器
'port' => 21, //端口
'timeout' => 90, //超時時間
'username' => 'ftp_user', //用戶名
'password' => 'ftp_pwd', //密碼 ),

表示當前使用Ftp作為上傳類的驅動,上傳的文件會通過FTP傳到指定的遠程服務器。

也可以在實例化上傳類的時候指定,例如:

$config = array(
'maxSize' = 3145728,
'rootPath' = './Uploads/',
'savePath' = '',
'saveName' = array('uniqid',''),
'exts' = array('jpg', 'gif', 'png', 'jpeg'),
'autoSub' = true,
'subName' = array('date','Ymd'),
);
$ftpConfig = array(
'host' => '192.168.1.200', //服務器
'port' => 21, //端口
'timeout' => 90, //超時時間
'username' => 'ftp_user', //用戶名
'password' => 'ftp_pwd', //密碼 );
$upload = new \Think\Upload($config,'Ftp',$ftpConfig);// 實例化上傳類

更多關于thinkPHP相關內容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結》、《ThinkPHP常用方法總結》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術總結》。

希望本文所述對大家基于ThinkPHP框架的PHP程序設計有所幫助。

您可能感興趣的文章:
  • ThinkPHP文件上傳實例教程
  • ThinkPHP結合AjaxFileUploader實現無刷新文件上傳的方法
  • Thinkphp多文件上傳實現方法
  • thinkPHP3.2簡單實現文件上傳的方法
  • layui框架實現文件上傳及TP3.2.3(thinkPHP)對上傳文件進行后臺處理操作示例
  • 封裝ThinkPHP的一個文件上傳方法實例
  • Thinkphp3.2簡單解決多文件上傳只上傳一張的問題
  • ThinkPHP實現帶驗證碼的文件上傳功能實例
  • Thinkphp5+uploadify實現的文件上傳功能示例
  • ThinkPHP5.0多個文件上傳后找不到臨時文件的修改方法

標簽:婁底 宜賓 銅川 鎮江 湛江 寶雞 南陽 黃南

巨人網絡通訊聲明:本文標題《TP3.2.3框架文件上傳操作實例詳解》,本文關鍵詞  TP3.2.3,框架,文件,上傳,操作,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《TP3.2.3框架文件上傳操作實例詳解》相關的同類信息!
  • 本頁收集關于TP3.2.3框架文件上傳操作實例詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    99久久99久久精品免费观看| 日本色综合中文字幕| 国产精品私人自拍| 久久国产精品区| 欧美日韩第一区日日骚| 亚洲电影第三页| 日韩一级免费一区| 美腿丝袜在线亚洲一区 | 色综合久久精品| 成人欧美一区二区三区1314| 91丨porny丨在线| 亚洲精品成人少妇| 欧美一区二区三级| 国内久久精品视频| 亚洲精品老司机| 日韩欧美精品三级| 国产成人综合亚洲91猫咪| 国产精品久久久久久久久久久免费看 | 国产成人免费9x9x人网站视频| 精品久久久久久最新网址| 丁香天五香天堂综合| 亚洲一区精品在线| 国产三级久久久| 欧美日韩aaaaa| 成人黄色免费短视频| 亚洲综合一二区| 久久久久久免费网| 欧美日韩视频在线一区二区| 国产一区二区三区视频在线播放| 日本怡春院一区二区| 日韩视频在线观看一区二区| 丰满少妇久久久久久久| 天堂va蜜桃一区二区三区| 久久蜜臀中文字幕| 精品视频一区 二区 三区| 国产精品中文字幕一区二区三区| 洋洋成人永久网站入口| 亚洲精品在线免费播放| 在线影院国内精品| 成人av资源站| 国产aⅴ综合色| 青青草原综合久久大伊人精品优势 | 欧美精三区欧美精三区| 大胆亚洲人体视频| 久久97超碰国产精品超碰| 亚洲国产aⅴ成人精品无吗| 中文字幕一区二区三区av| 久久综合色之久久综合| 精品久久一二三区| 91精品国产色综合久久久蜜香臀| 欧美日韩在线一区二区| 暴力调教一区二区三区| 成人午夜电影久久影院| 激情综合色播激情啊| 日韩电影在线免费| 亚洲高清免费在线| 一区二区三区国产精华| 国产精品成人网| 亚洲国产精品精华液2区45| 欧美r级在线观看| 日韩精品一区在线| 91精品国产91久久综合桃花 | 亚洲精品一区二区三区四区高清| 欧美色精品在线视频| 91国产视频在线观看| 91丨porny丨中文| 精品免费99久久| 日韩三级电影网址| 日韩精品一区二区三区视频 | 亚洲国产高清不卡| 中文字幕国产一区| 亚洲私人黄色宅男| 一区二区三区精品| 蜜臀av亚洲一区中文字幕| 天天影视涩香欲综合网| 婷婷六月综合网| 日本不卡在线视频| 国产伦理精品不卡| 91色九色蝌蚪| 欧美一区二区精品| 精品播放一区二区| 国产日韩欧美制服另类| 色网综合在线观看| 蜜乳av一区二区三区| 国产一区免费电影| 成人国产精品免费观看视频| 色久优优欧美色久优优| 欧美一区二区在线看| 久久精品亚洲一区二区三区浴池| 亚洲欧洲日韩av| 亚洲第一久久影院| 国产精品一区二区x88av| 97se亚洲国产综合自在线观| 337p亚洲精品色噜噜狠狠| 久久色视频免费观看| 一级精品视频在线观看宜春院 | 99久久综合色| 欧美精品一卡两卡| 中文字幕中文乱码欧美一区二区 | 一二三区精品视频| 久久精品国产一区二区三区免费看| 国产成人在线观看| 在线一区二区观看| 国产三级一区二区| 日韩不卡一区二区三区| 99精品视频在线观看| 精品日产卡一卡二卡麻豆| 亚洲影视在线播放| a4yy欧美一区二区三区| 亚洲三级在线观看| 国产精品1024| 精品久久久久久最新网址| 中文字幕亚洲精品在线观看| 亚洲乱码精品一二三四区日韩在线 | 日韩主播视频在线| 一区二区三区不卡在线观看| 欧美日韩成人综合在线一区二区| 精品亚洲porn| 一区二区三区在线免费播放| 亚洲国产精品自拍| 亚洲欧美日韩久久精品| 欧美日韩久久一区二区| 最新国产精品久久精品| 欧美亚洲动漫制服丝袜| 99国产精品国产精品久久| 免费人成在线不卡| 亚洲大片免费看| 午夜在线电影亚洲一区| 国产欧美日韩在线视频| 欧美乱熟臀69xxxxxx| 国产精品国产三级国产专播品爱网 | 亚洲最色的网站| 九九视频精品免费| 色综合天天综合网天天狠天天| 精品国精品国产尤物美女| 亚洲午夜视频在线| kk眼镜猥琐国模调教系列一区二区 | 亚洲一区在线观看免费| 99久精品国产| 欧美国产综合色视频| 国模少妇一区二区三区| 日韩久久久久久| 蜜臀av一区二区在线免费观看 | 国产欧美一区二区在线观看| 久久精品免费看| 久久亚洲影视婷婷| 国产一区二区三区电影在线观看| 精品成a人在线观看| 国产精品91xxx| 中文字幕一区二区三区精华液 | 色88888久久久久久影院野外| 亚洲欧洲三级电影| 99久久99久久久精品齐齐| 亚洲国产日韩在线一区模特| 91精品一区二区三区在线观看| 另类小说一区二区三区| 久久久91精品国产一区二区精品 | 成人在线综合网| 亚洲免费视频成人| 91精品免费在线| 国产风韵犹存在线视精品| 亚洲欧美一区二区三区孕妇| 91精品国产一区二区三区蜜臀| 国产精品一区久久久久| 亚洲精品成人在线| 精品久久免费看| 一本大道久久a久久综合| 丝袜美腿一区二区三区| 国产午夜精品理论片a级大结局| 91免费看片在线观看| 视频一区视频二区中文字幕| 久久久久久久久久久99999| 国产成人免费在线观看不卡| 亚洲人xxxx| 欧美成人a视频| 在线观看一区二区视频| 国产在线精品视频| 午夜精品成人在线视频| 中文字幕免费不卡在线| 欧美一区二区日韩| 色综合天天综合| 韩国女主播一区二区三区| 最新国产成人在线观看| 精品久久国产字幕高潮| 91成人国产精品| av不卡一区二区三区| 国产精品综合在线视频| 日本欧美大码aⅴ在线播放| 亚洲最快最全在线视频| 国产精品久久久久桃色tv| 欧美刺激午夜性久久久久久久| 91视频免费看| 成人做爰69片免费看网站| 狠狠v欧美v日韩v亚洲ⅴ| 日本欧美在线看| 午夜精品福利在线| 亚洲国产日韩a在线播放性色| 中文字幕一区二区三区四区不卡| 久久女同性恋中文字幕| 日韩一区二区三区视频在线观看|