ThinkPHP3.1多檔案上傳路徑和命名

來源:互聯網
上載者:User
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都不行

你們繼續討論,明天結貼

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.