上傳文件的命名規(guī)范用于確保文件不會(huì)產(chǎn)生沖突或者覆蓋的情況渐白。而命名規(guī)范的定義又需要根據(jù)你的業(yè)務(wù)邏輯來(lái)調(diào)整尊浓,不是固定的。例如纯衍,如果你采用時(shí)間戳的方式來(lái)定義命名規(guī)范栋齿,那么在同時(shí)上傳多個(gè)文件的時(shí)候可能產(chǎn)生沖突(因?yàn)橥幻雰?nèi)可以上傳多個(gè)文件),因此你需要根據(jù)你的業(yè)務(wù)需求來(lái)設(shè)置合適的上傳命名規(guī)則托酸。這里順便來(lái)說(shuō)下saveRule參數(shù)的具體用法
一褒颈、采用函數(shù)方式如果傳入的字符串是一個(gè)函數(shù)名,那么表示采用函數(shù)動(dòng)態(tài)生成上傳文件名(不包括文件后綴)励堡,例如:
$upload->saveRule = 'time'; // 采用時(shí)間戳命名$upload->saveRule = 'com_create_guid'; // 采用GUID序列命名也可以采用用戶自定義函數(shù):$upload->saveRule = 'myfun'; // 采用自定義函數(shù)命名
二、直接設(shè)置上傳文件名
如果傳入的參數(shù)不是一個(gè)函數(shù)名堡掏,那么就會(huì)直接當(dāng)做是上傳文件名应结,例如:
$upload->saveRule = time().'_'.mt_rand();
復(fù)制代碼三、保持上傳文件名不變
如果你想保持上傳的文件名不變泉唁,那么只需要設(shè)置命名規(guī)范為空即可鹅龄,例如:
$upload->saveRule = '';
復(fù)制代碼一般來(lái)說(shuō)不建議保持不變,因?yàn)闀?huì)導(dǎo)致相同的文件名上傳后被覆蓋的情況绞佩。子目錄保存saveRule只是用于設(shè)置文件的保存規(guī)則揉燃,不涉及到目錄唇撬,如果希望采用子目錄保存上傳文件,可以使用下面的三種方式設(shè)置子目錄:
一玷坠、哈希子目錄$upload->subType = 'hash';$upload->hashLevel = 2;
復(fù)制代碼設(shè)置后蜗搔,會(huì)自動(dòng)對(duì)上傳文件進(jìn)行哈希編碼后的第一個(gè)和第二個(gè)字母分別作為一級(jí)和二級(jí)子目錄名稱保存。如果hashLevel不設(shè)置八堡,則默認(rèn)為一級(jí)子目錄樟凄。
二、日期子目錄這種方式也比較常用兄渺,用日期作為子目錄名稱缝龄,$upload->subType = 'date';$upload->dateFormat = 'Y-m-d';
復(fù)制代碼dateFormat參數(shù)則用于配合設(shè)置日期的格式,如果不設(shè)置挂谍,則默認(rèn)為Ymd叔壤。
三、自定義子目錄這種方式作為一種更靈活的子目錄保存方式口叙,是最新添加的功能支持炼绘。$upload->subType = 'custom';$upload->subDir = get_user_id();
復(fù)制代碼自定義子目錄方式的優(yōu)勢(shì)在于,可以動(dòng)態(tài)設(shè)置子目錄名稱庐扫,上面的定義就采用了當(dāng)前用戶ID作為子目錄名稱饭望。生成縮略圖縮略圖功能需要Image擴(kuò)展類的支持,所以確保你已經(jīng)有了這個(gè)擴(kuò)展類形庭。然后設(shè)置如下參數(shù)://設(shè)置需要生成縮略圖铅辞,僅對(duì)圖像文件有效$upload->thumb = true;//設(shè)置需要生成縮略圖的文件前綴$upload->thumbPrefix = 'm_,s_'; //生產(chǎn)2張縮略圖//設(shè)置縮略圖最大寬度$upload->thumbMaxWidth = '200,50';//設(shè)置縮略圖最大高度$upload->thumbMaxHeight = '200,50';//設(shè)置生成縮略圖后移除原圖$upload->thumbRemoveOrigin = true;
縮略圖的前(后)綴數(shù)量必須和寬度數(shù)量對(duì)應(yīng),表示生成多個(gè)縮略圖萨醒。生成的縮略圖默認(rèn)位于保存文件的實(shí)際所在目錄(包括子目錄的情況)斟珊,當(dāng)然你也可以指定統(tǒng)一的縮略圖保存路徑,例如:$upload->thumbPath = './Uploads/thumb/';
復(fù)制代碼這里的thumbPath參數(shù)必須用“/”結(jié)尾富纸。我們可以設(shè)置縮略圖采用統(tǒng)一的文件后綴囤踩,例如:
// 設(shè)置縮略圖的固定后綴$upload->thumbExt = 'jpg';
復(fù)制代碼更多的上傳類用法可以通過(guò)上傳參數(shù)的設(shè)置來(lái)完成。