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


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

    但是除了数据库可用的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())
  • 相关阅读:
    C++各大有名库的介绍——网络通信
    C++名人的网站
    C++各大有名库的介绍——序列化
    C++各大有名库的介绍——字符串
    C++各大有名库的介绍——游戏开发
    C++各大有名库的介绍——其他库
    C++各大有名库的介绍——综合
    java hashcode写法
    vs 在线引用
    eclipse去掉拼写检查
  • 原文地址:https://www.cnblogs.com/ych00/p/10644384.html
Copyright © 2020-2023  润新知