前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django中web开发用md5加密图片

Django中web开发用md5加密图片

作者头像
py3study
发布2020-01-16 11:24:04
1.1K0
发布2020-01-16 11:24:04
举报
文章被收录于专栏:python3
一般在开发中,有的网站存在大量图片,首先图片的名称是不能重复的,
但是除了数据库可用的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()储存

代码语言:javascript
复制
 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())
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/05/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一般在开发中,有的网站存在大量图片,首先图片的名称是不能重复的,
  • 但是除了数据库可用的id以外我们可以用time模块中time.time()获取的时间来进行md5加密操作,
  • 因为time模块所产生的时间的精度为亚秒级,是不会发生重复的情况
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档