天天看點

Thinkphp5之上傳檔案命名重複

問題:

  1. 在使用thinkphp5的File類預設date的命名規則,上傳多張圖檔導緻命名重複覆寫上傳檔案的問題。下面是thinkphp5的原代碼:
case 'date':
      $savename = date('Ymd') . DS . md5(microtime(true));
           
  1. 錯誤結果
/tmp/phpDZ9Dol
 /d9595bb3d6895f7388a8ca8a52.jpg
 /d9595bb3d6895f7388a8ca8a52.jpg
 /d9595bb3d6895f7388a8ca8a52.jpg
 /tmp/php3qSYP4
 /d05eb11e955ee47105e3ff28d83a1582.jpg
 /d05eb11e955ee47105e3ff28d83a1582.jpg
 /d05eb11e955ee47105e3ff28d83a1582.jpg
 /tmp/php3OYlhO
 /de1dba77a50c1c97573bc541a12361.jpg
 /de1dba77a50c1c97573bc541a12361.jpg
 /de1dba77a50c1c97573bc541a12361.jpg
 /tmp/phpRMMLIx
 /b2020f86c54ea1e3a51ba9d286dbef0.jpg
 /b2020f86c54ea1e3a51ba9d286dbef0.jpg
 /b2020f86c54ea1e3a51ba9d286dbef0.jpg
 /tmp/phpXfIdah
 /d03379ecf0292c8d4d14e4ce76a81ae1.jpg  問題
 /d03379ecf0292c8d4d14e4ce76a81ae1.jpg  問題
 /d03379ecf0292c8d4d14e4ce76a81ae1.jpg  問題
 /tmp/phpv7gIB0
 /d03379ecf0292c8d4d14e4ce76a81ae1.jpg  問題
 /d03379ecf0292c8d4d14e4ce76a81ae1.jpg  問題
 /d03379ecf0292c8d4d14e4ce76a81ae1.jpg  問題
 /tmp/phpFwXd3J
 /ba7b97e9281c15fcb2256eb3d4d0647.jpg
 /ba7b97e9281c15fcb2256eb3d4d0647.jpg
 /ba7b97e9281c15fcb2256eb3d4d0647.jpg
 /tmp/phpT1KKut
 /ef906542e81eb0c8494f776197b.jpg
 /ef906542e81eb0c8494f776197b.jpg
 /ef906542e81eb0c8494f776197b.jpg
           

解決:

case 'date':
//保持檔案名唯一性。
      $savename = date('Ymd') . DS . md5(microtime(true).$this->filename);