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 等,但必須能保證產生的檔案名稱是唯一的,預設是uniqidhashType 上傳檔案的雜湊驗證方法,預設是md5_fileautoCheck 是否自動檢測附件,預設為自動檢測uploadReplace 存在同名檔案是否是覆蓋allowExts 允許上傳的檔案尾碼(留空為不限制),使用數組設定,預設為空白數組allowTypes 允許上傳的檔案類型(留空為不限制),使用數組設定,預設為空白數組thumb 是否需要對圖片檔案進行縮圖處理,預設為falsethumbMaxWidth 縮圖的最大寬度,多個使用逗號分隔thumbMaxHeight 縮圖的最大高度,多個使用逗號分隔thumbPrefix 縮圖的檔案首碼,預設為thumb_thumbSuffix 縮圖的檔案尾碼,預設為空白thumbPath 縮圖的儲存路徑,留空的話取檔案上傳目錄本身thumbFile 指定縮圖的檔案名稱thumbRemoveOrigin 產生縮圖後是否刪除原圖autoSub 是否使用子目錄儲存上傳檔案subType 子目錄建立方式,預設為hash,可以設定為hash或者datedateFormat 子目錄方式為date的時候指定日期格式hashLevel 子目錄儲存的層次,預設為一層以上屬性都可以直接設定
http://doc.thinkphp.cn/manual
多檔案分路徑?可能要自己改寫Upload類吧
執行個體化上傳類之後,就可以設定一些上傳的屬性(參數),支援的屬性有:maxSize 檔案上傳的最大檔案大小(以位元組為單位)預設為-1 不限大小savePath 檔案儲存路徑,如果留空會取UPLOAD_PATH常量定義的路徑saveRule 上傳檔案的儲存規則,必須是一個無需任何參數的函數名,例如可以是 time、 uniqid com_create_guid 等,但必須能保證產生的檔案名稱是唯一的,預設是uniqidhashType 上傳檔案的雜湊驗證方法,預設是md5_fileautoCheck 是否自動檢測附件,預設為自動檢測uploadReplace 存在同名檔案是否是覆蓋allowExts 允許上傳的檔案尾碼(留空為不限制),使用數組設定,預設為空白數組allowTypes 允許上傳的檔案類型(留空為不限制),使用數組設定,預設為空白數組thumb 是否需要對圖片檔案進行縮圖處理,預設為falsethumbMaxWidth 縮圖的最大寬度,多個使用逗號分隔thumbMaxHeight 縮圖的最大高度,多個使用逗號分隔thumbPrefix 縮圖的檔案首碼,預設為thumb_thumbSuffix 縮圖的檔案尾碼,預設為空白thumbPath 縮圖的儲存路徑,留空的話取檔案上傳目錄本身thumbFile 指定縮圖的檔案名稱thumbRemoveOrigin 產生縮圖後是否刪除原圖autoSub 是否使用子目錄儲存上傳檔案subType 子目錄建立方式,預設為hash,可以設定為hash或者datedateFormat 子目錄方式為date的時候指定日期格式hashLevel 子目錄儲存的層次,預設為一層以上屬性都可以直接設定
$co['saveRule'] = date('ymdHis',time()).'_'.mt_rand();使用這個設定名字後,只能上傳一個,多個上傳,會提示檔案已存在。
saveRule 上傳檔案的儲存規則, 必須是一個無需任何參數的函數名
顯然你的 $co['saveRule'] = date('ymdHis',time()).'_'.mt_rand(); 不符合這個要求
你可以定義一個函數,比如
function my_filename() { return date('ymdHis',time()).'_'.mt_rand();}
然後
$co['saveRule'] = ‘my_filename';
saveRule 上傳檔案的儲存規則, 必須是一個無需任何參數的函數名
顯然你的 $co['saveRule'] = date('ymdHis',time()).'_'.mt_rand(); 不符合這個要求
你可以定義一個函數,比如
function my_filename() { return date('ymdHis',time()).'_'.mt_rand();}
然後
$co['saveRule'] = ‘my_filename';
$co['saveRule'] = ‘my_filename';這樣些他就是直接把這個當成字串,變成名字了,$co['saveRule'] = my_filename();我改成這樣又提示未定義這個方法。
還有在問下,如果沒有檔案上傳,他提示必須上傳檔案,怎麼改成不是必須上傳檔案。
saveRule 上傳檔案的儲存規則, 必須是一個無需任何參數的函數名
顯然你的 $co['saveRule'] = date('ymdHis',time()).'_'.mt_rand(); 不符合這個要求
你可以定義一個函數,比如
function my_filename() { return date('ymdHis',time()).'_'.mt_rand();}
然後
$co['saveRule'] = ‘my_filename';
這個架構是新手,第一次用,
saveRule 上傳檔案的儲存規則, 必須是一個無需任何參數的函數名
顯然你的 $co['saveRule'] = date('ymdHis',time()).'_'.mt_rand(); 不符合這個要求
你可以定義一個函數,比如
function my_filename() { return date('ymdHis',time()).'_'.mt_rand();}
然後
$co['saveRule'] = ‘my_filename';
不是讓你定義一個函數了嗎?
是看不懂,還是沒看見?
不是讓你定義一個函數了嗎?
是看不懂,還是沒看見?
不還意思,我函數放錯地方了,有時候提交的時候不上傳檔案,但是他會提示未上傳檔案,怎麼設定忽略。
那就不知道了,我沒用過
已經做出來了,用的是saveRule,用savename或者saveName都不行
你們繼續討論,明天結貼