Create Unique Image Names

前端 未结 15 2188
暗喜
暗喜 2021-01-06 08:02

What\'s a good way to create a unique name for an image that my user is uploading?

I don\'t want to have any duplicates so something like MD5($filename) isn\'t suita

15条回答
  •  南方客
    南方客 (楼主)
    2021-01-06 08:27

    For good performance and uniqueness you can use approach like this:

    • files will be stored on a server with names like md5_file($file).jpg

    • the directory to store file in define from md5 file name, by stripping first two chars (first level), and second two (second level) like that:

      uploaded_files\ 30 \ c5 \ 30 c5 67139b64ee14c80cc5f5006d8081.pdf

    • create record in database with file_id, original file name, uploaded user id, and path to file on server

    • on server side create script that'll get role of download providing - it'll get file by id from db, and output its content with original filename provided by user (see php example of codeigniter download_helper ). So url to file will look like that:

      http://site.com/download.php?file=id


    Pros:

    • minified collisions threat

    • good performance at file lookup (not much files in 1 directory, not much directories at the same level)

    • original file names are saved

    • you can adjust access to files by server side script (check session or cookies)

    Cons:

    • Good for small filesizes, because before user can download file, server have to read this file in memory

提交回复
热议问题