2013-01-20 67 views
0

什麼是最好的方式來編輯和命名上傳的文件?組織&名稱上傳的文件

我可能對此有錯,但我覺得將所有文件保存到一個目錄並不是一種好的做法,因爲如果需要瀏覽文件,這會導致文件系統變慢。

所有的思想和理念的歡迎

乾杯

回答

0

我使用這樣的功能,生成一個3級文件夾的上傳文件的樹:在一個文件

function get_1000_path($id) 
{ 
    $id = strval($id); 
    $id = str_repeat("0", 9 - strlen($id)).$id; 

    $path = substr($id, 0, 3)."/".substr($id, 3, 3)."/".substr($id, 6, 3)."/"; 

    return $path; 
} 

所以最大計數子文件夾爲1000,文件系統將運行良好

0

這取決於您的應用程序的工作方式。

如果是像用戶圖庫那樣的話,我會爲每個用戶創建一個文件夾,然後爲每個月 - >月份結構創建一個文件夾。

如果所有用戶共享文件,我會根據時間(年 - >月 - >星期 - >日)將它們組織到不同的目錄中。如果您的網站預計流量不大,那麼每年 - >月份的分配應該足夠了。

我會使用uniqid()函數重命名上傳的文件,以便不需要檢查覆蓋或重複。

0

我認爲這取決於您的系統/網站或需求,即。對於用戶門戶,它可能更好,就像這樣user_images/USER-ID/filename-unid_id.jpg。例如,對於新聞網站,這可能是有用的uploads/news_images/YYYY/MM/DD/filename-unid_id.jpg類型。在這一點上,它不需要像md5或其他東西那樣大的unid_id,你可以使用php hash,比如:$unid_id = hash('crc32b', microtime())。因爲有強硬的線路可能性。

// in your upload file 
$dir = "uploads/news_images/". date("Y-m-d"); 
if (!is_dir($dir)) { 
    mkdir($dir, 0777, true); 
    if (!is_writable($dir)) chmod($dir, 0777); // try again changing mod 
} 

但是,這兩個例子都需要存儲每個文件的文件名/路徑。通過這種方式,您可以使用這種方法來存儲數據(我個人使用json格式存儲多個數據時,如果我不需要搜索);

// table "news_images" 
id | file_name | file_data 
-------------------------- 
1 | blue fish | {"path":"2012/12/12", "slug":"blue-fish-9834a12b", "ext":"jpg" ... 

好盧克斯..