Django中web开发用md5加密图片

2023-01-31 00:01:44 开发 图片 加密

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

但是除了数据库可用的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())

 

相关文章