欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Django中web开发用md5加密图片名并存储静态文件夹

程序员文章站 2022-04-09 14:02:26
一般在开发中,有的网站存在大量图片,首先图片的名称是不能重复的, 但是除了数据库可用的id以外我们可以用time模块中time.time()获取的时间来进行md5加密操作, 因为time模块所产生的时间的精度为亚秒级,是不会发生重复的情况 1.这里封装了md5的加密字符,导入setting.py的静 ......

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

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