Django-----加入MD5格式上传图片
上传图片为什么要加 MD5 ?
答 :避免用户上传图片的时候图片名重复,而引起先上传的图片被后上传的图片所覆盖的失误!
MD5是什么?
答:一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
1. 在project的同级目录下,手动创建文件夹 static 在static下创建img文件夹
2. setting.py
STATICFILES_DIRS=[ os.path.join(BASE_DIR,'static') ]
3. index.html
<form action="" method="post" enctype="multipart/form-data"> {% csrf_token %} 上传图片: <input type="file" name="image"> <br><br> <button type="submit">提交</button> </form>
4. views.py
# 导入刚刚在setting.py里面配置的文件 from helloworld_project.settings import STATICFILES_DIRS import os,time,hashlib # 返回MD5 (防止添加的相同照片名字,引起照片覆盖) def get_md5(str_): m=hashlib.md5() m.update(str_.encode()) return m.hexdigest() # 返回的绝对唯一MD5值 def image(request): now=time.time() file_name=get_md5(str(now)) if request.method=="GET": return render(request, "add_image.html") if request.method=="POST": # fp 获取到上传文件对象 fp = request.FILES.get("image") if fp: path = os.path.join(STATICFILES_DIRS[0], "img/" + file_name+"."+ fp.name.split(".")[-1]) # fp.name # 文件名 # yield = fp.chunks # 流式获取文件内容 # fp.read() 直接读取文件内容 if fp.multiple_chunks(): # 判断是否是大文件传入 file_yield = fp.chunks() #若果是大文件传入的话,就需要遍历,然后挨个写入 with open(path,'wb') as f: for buf in file_yield: f.write(buf) else: print("大文件上传完毕") else: with open(path,'wb') as f: f.write(fp.read()) print("小文件上传完毕") # 将图片的连接添加到数据库,(数据库的字段类型为 CharField 长度:max_length=300 (长度不要过短)) models.Image.objects.create( image=( "img/" + file_name+"."+ fp.name.split(".")[-1]) ) return redirect("/")
Django-----加入MD5格式上传图片的更多相关文章
- EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象
EF+LINQ事物处理 在使用EF的情况下,怎么进行事务的处理,来减少数据操作时的失误,比如重复插入数据等等这些问题,这都是经常会遇到的一些问题 但是如果是我有多个站点,然后存在同类型的角色去操作 ...
- Python+js进行逆向编程加密MD5格式
一.安装nodejs 二.安装:pip install PyExecJs 三.js源文件Md5格式存放本地,如下 var n = {}function l(t, e) {var n = (65535 ...
- django使用admin站点上传图片
Django有提供文件系统支持,在Admin站点中可以轻松上传图片.使用Admin站点保存图片,需要安装Python的图片操作包 pip install Pillow 1 配置 默认情况下,Dja ...
- django 高级扩展-中间件-上传图片-分页-富文本-celery
""" django 高级扩展 一.静态文件 1.css,js,json,图片,字体等 2.配置setting,在最底下设置静态文件目录,写入下面代码 #配置静态文件目录 ...
- django rest framework批量上传图片及导入字段
一.项目需求 批量上传图片,然后批量导入(使用excel)每个图片对应的属性(属性共十个,即对应十个字段,其中外键三个). 二.问题 一次可能上传成百上千张图片和对应字段,原来数据库的设计我将图片和对 ...
- django 的 ajax 方式上传图片
页面代码: <html> <!-- 引入相关的js文件,相对路径 --> <script type="text/javascript" ...
- django基础知识之上传图片:
上传图片 当Django在处理文件上传的时候,文件数据被保存在request.FILES FILES中的每个键为<input type="file" name="& ...
- c# API接受图片文件以Base64格式上传图片
/// base64上传图片 /// </summary> /// <returns>成功上传返回上传后的文件名</returns> [HttpPost] publ ...
- django —— KindEditor - 跨域上传图片
#跨域上传方法 def frontupload(request): if request.method == 'POST': item = {} file = request.FILES.get('i ...
随机推荐
- Spring 集成 Swagger UI
<!-- Spring --> <dependency> <groupId>org.springframework.boot</groupId> < ...
- vue.js中的computed和watch的区别
1.computed在调用时不需要加(),watch是不需要调用的2.computed如果属性没有发生改变时会从缓存中读取值,watch当属性发生改变时会接收到2个值:一个为新值,一个为旧值3.com ...
- chrome内核浏览器插件的使用--Tampermonkey(油猴插件)
Tampermonkey(油猴插件),这个插件是一个用于改造你浏览器打开的网站的插件.它可以在你打开的网页中注入任意js脚本,以达到你想要的外加功能.可以说非常不错.很多时候也值得使用. 这是个chr ...
- 剑指offer(49)把字符串转换成整数。
题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法 ...
- 【linux下查看文件路径--jdk】
1.which java 首先输入命令行,查看结果: [root@localhost ~]# which java /usr/bin/java PS:which Java是无法定位到Java的安装路径 ...
- P4312 [COCI 2009] OTOCI / 极地旅行社
思路 LCT维护和的板子 注意findroot的时候要先access一下,修改点权之前要先splay到根 代码 #include <cstdio> #include <algorit ...
- jquery 获取当前点击的是谁
//今天早上有人问这个问题 想着没写过jquery的笔记 //那就随便写一下吧 下面两个方法 根据不同情况而定用哪种方法$(".class").click(function(){ ...
- js的缓存
无网络的情况下,使用静态资源呈现页面的方法,只有h5的manifest 有网的情况下(可以连接到服务器的情况下),有3种判断缓存的方式. ------------------------------- ...
- python模块--re模块
常用的正则表达式模式: . 匹配除换行符以外的任意字符 \d 匹配一个数字字符.等价于 [0-9]. \D 匹配一个非数字字符.等价于 [^0-9]. \s 匹配任何空白字符,包括空格.制表符 ...
- redis pipline 和 事务
1. Pipeline:“管道”,和很多设计模式中的“管道”具有同样的概念,pipleline的操作,将明确client与server端的交互,都是“单向的”:你可以将多个command,依次发给se ...