article 中上傳靜態圖片時重新命名

娃哈哈店長發表於2020-01-07

小工具:編寫函式當圖片儲存時自動修改檔名和字尾

apps/blog/model.py:


img = models.ImageField(upload_to='media/article',

                            default='media/artile/default.png', storage=ImageStorage())

將img中新增一個storage方式,我們重構一下圖片儲存的方式:


from django.core.files.storage import FileSystemStorage

。。。。。

class ImageStorage(FileSystemStorage):

    def __init__(self, location=settings.MEDIA_ROOT, base_url=settings.MEDIA_URL):

        #初始化

        super(ImageStorage, self).__init__(location, base_url)

    def _save(self, name, content):

        #重新檔案上傳

        import hashlib

        #獲取檔案字尾

        ext = '.bmp'

        #檔案目錄

        d = os.path.dirname(name)

        #定義資料夾名稱

        fn = time.strftime(

            '%Y%m%d%H%M%S')

        # fn = hashlib.md5(time.strftime(

        #     '%Y%m%d%H%M%S').encode('utf-8')).hexdigest()

        name = os.path.join(d, fn+ext)

        #呼叫父類方法

        return super(ImageStorage, self)._save(name, content)

當我們上傳檔案的時候就會自動呼叫這個函式,來重新編寫檔案的字尾名。

本作品採用《CC 協議》,轉載必須註明作者和本文連結
文章!!首發於我的部落格Stray_Camel(^U^)ノ~YO

相關文章