Django中web开发用md5加密图片

发布时间:2019-05-23 21:23:13编辑:auto阅读(2162)

    一般在开发中,有的网站存在大量图片,首先图片的名称是不能重复的,

    但是除了数据库可用的id以外我们可以用time模块中time.time()获取的时间来进行md5加密操作

    因为time模块所产生的时间的精度为亚秒级,是不会发生重复的情况

     

    1.这里封装了md5的加密字符,导入setting.py的静态文件目录(路径拼接时需要)

       from stu_entry.settings  import STATICFILES_DIRS
       import time  
       import hashlib #md5所用的hashlib模块
       import os
       def md5(str_):
         md = hashlib.md5()  #创建md5对象
         md.update(str_.encode()) #生成加密字符
         return md.hexdigest() #返回的是加密后的字符

     

     

    (声明):首先我们用表单获取前端传输过来的文件名称,我用的ajax传输,为什么不正常获取文件呢,因为那样太low了!

    2.这里就用到了time.time()获取当时时间,传入封装后的md5函数,这时的结果就为加密后的md5字符。

    3.原图片的名字不要了,因为我们有md5字符作前缀,所以用split把字符串分割只要后面的。

    4.然后这里我们要拼接一下路径,os的路径拼接把前面的文件路径带上所以我们这时需要静态文件下img的路径,

      这里直接取setting.py 的静态文件就可以。

    5.这里写图片需要判断下文件是否大于2.5M,如果大于我们就迭代写入,否则直接用read()储存

     

     path = request.FILES.get('表单name值')
    now = time.time() pa_md = md5(str(now)) wf = path.name.split('.')[-1] f = os.path.join(STATICFILES_DIRS[0],'img/',pa_md +'.'+wf ) if path.multiple_chunks: with open(f,'wb') as hf: for buf in path.chunks(): hf.write(buf) else: hf.write(path.read())

     

关键字