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 ...
随机推荐
- 《CSS世界》读书笔记(三) --width:auto
<!-- <CSS世界> 张鑫旭著 --> width:auto width:auto至少包含了以下4种不同的宽度表现: 充分可利用空间.比方说,<div>.&l ...
- 判断(if)语句
目标 开发中的应用场景 if语句体验 if语句进阶 综合应用 一 开发中的应用场景 转换成代码 判断的定义 如果 条件满足,才能做某件事 如果 条件不满足,就做另外一件事,或者什么也不做 判断语句 又 ...
- web文件上传
文件上传的步骤: 1.目前Java文件上传功能都是依靠Apache组织的commons-io, fileupload两个包来实现的: 2. http://commons.apache.org/下载io ...
- hashmap相关面试题
- D2欧拉路,拓扑排序,和差分约束
第一题:太鼓达人:BZOJ3033 题意:给出k,求一个最长的M位01串,使其从每一个位置向后走k个得到 的M个k位01串互不相同(最后一个和第一个相邻,即是一个环).输出 字典序最小的答案. 2 ≤ ...
- Spring 学习——Spring注解——Autowiring(自动装配)
装配方式 方式一:默认 方式二:byName:根据属性名称自动装配.会查找Bean容器内部所有初始化的与属性名成相同的Bean,自动装配.(需要通过set方法注入,注入Bean的id名称需要和实体类的 ...
- spring boot 2整合mybatis
mybatis-spring-boot-starter主要有两种解决方案,一种是使用注解,一种是使用XML. 参考这篇文章动手跑了一个例子,稍微不同之处,原文是spring boot,这里改成了spr ...
- idea基于hibernate生成的Entitle对象,会忽略外键属性
需要自己手动添加 如 private String cgcode; @Basic @Column(name = "cgcode") public String getCgcode( ...
- sql server替换字段中的某个字符
USE [Vocabulary ] GO --UPDATE [dbo].[table name] -- SET [en] = '' -- ,[cn] ='' -- WHERE --cha ...
- linux服务管理 服务管理
系统的运行级别 运行级别 0 关机(不能设置) 1 单用户模式,类似windows的安全模式 2 不完全的命令行模式,不含NFS服务(文件共享的服务) 3 完全的命令行模式,就是标准字符界面 4 系统 ...