ThinkPHP3.1多檔案上傳路徑和命名
import('ORG.Net.UploadFile');
$co = array();
$co['maxSize'] = 3145728;
$co['saveRule'] = date('ymdHis',time()).'_'.mt_rand();
$co['allowExts'] = array('jpg', 'gif', 'png', 'jpeg');
$co['savePath'] = './Public/image/home/news/';
$upload = new UploadFile($co);// 執行個體化上傳類
if(!$upload->upload()) {// 上傳錯誤提示錯誤資訊
$this->error($upload->getErrorMsg());
}else{// 上傳成功 擷取上傳檔案資訊
$info = $upload->getUploadFileInfo();
}
這樣上傳多個檔案時,錯誤說檔案已存在,命名重複了。還有上傳了兩個檔案如何,讓他們分開存放不同的路徑。
------解決方案--------------------
執行個體化上傳類之後,就可以設定一些上傳的屬性(參數),支援的屬性有:
maxSize 檔案上傳的最大檔案大小(以位元組為單位)預設為-1 不限大小
savePath 檔案儲存路徑,如果留空會取UPLOAD_PATH常量定義的路徑
saveRule 上傳檔案的儲存規則,必須是一個無需任何參數的函數名,例如可以是 time、 uniqid com_create_guid 等,但必須能保證產生的檔案名稱是唯一的,預設是uniqid
hashType 上傳檔案的雜湊驗證方法,預設是md5_file
autoCheck 是否自動檢測附件,預設為自動檢測
uploadReplace 存在同名檔案是否是覆蓋
allowExts 允許上傳的檔案尾碼(留空為不限制),使用數組設定,預設為空白數組
allowTypes 允許上傳的檔案類型(留空為不限制),使用數組設定,預設為空白數組
thumb 是否需要對圖片檔案進行縮圖處理,預設為false
thumbMaxWidth 縮圖的最大寬度,多個使用逗號分隔
thumbMaxHeight 縮圖的最大高度,多個使用逗號分隔
thumbPrefix 縮圖的檔案首碼,預設為thumb_
thumbSuffix 縮圖的檔案尾碼,預設為空白
thumbPath 縮圖的儲存路徑,留空的話取檔案上傳目錄本身
thumbFile 指定縮圖的檔案名稱
thumbRemoveOrigin 產生縮圖後是否刪除原圖
autoSub 是否使用子目錄儲存上傳檔案
subType 子目錄建立方式,預設為hash,可以設定為hash或者date
dateFormat 子目錄方式為date的時候指定日期格式
hashLevel 子目錄儲存的層次,預設為一層
以上屬性都可以直接設定
------解決方案--------------------
http://doc.thinkphp.cn/manual
多檔案分路徑?可能要自己改寫Upload類吧
------解決方案--------------------
saveRule 上傳檔案的儲存規則,
必須是一個無需任何參數的函數名
顯然你的 $co['saveRule'] = date('ymdHis',time()).'_'.mt_rand(); 不符合這個要求
你可以定義一個函數,比如
function my_filename() {
return date('ymdHis',time()).'_'.mt_rand();
}
然後
$co['saveRule'] = ‘my_filename';