drf base64转图片保存并验证图片是否能正常打开
时间:2020-06-10
本文章向大家介绍drf base64转图片保存并验证图片是否能正常打开,主要包括drf base64转图片保存并验证图片是否能正常打开使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最近在用drf做的一个前后台分离的项目,有个传图片的地方,前台想传base64
想了下决定在序列化器的校验器中做这个事
在此贴下序列化器代码
1 from rest_framework import serializers 2 from . import models 3 import base64 4 import os 5 import imghdr # 检验图片 6 from django.conf import settings 7 from utils.tools import get_order_code 8 9 class PaymentVoucherSerializer(serializers.ModelSerializer): 10 voucher_img = serializers.CharField() 11 12 def validate_voucher_img(self, voucher_img): 13 try: 14 imgdata = base64.b64decode(voucher_img) 15 filename = get_order_code() + '.jpg' 16 path = os.path.join(settings.MEDIA_ROOT, 'voucher_img') # 上传文件的保存路径 17 if not os.path.exists(path): 18 os.makedirs(path) 19 with open(path + '/' + filename, 'wb+')as f: 20 f.write(imgdata) 21 # 如果图片不完整,即无法正常打开时,res为None;正常时为图片类型 22 res = imghdr.what(path + '/' + filename) 23 if res: 24 voucher_img = settings.MEDIA_URL + 'voucher_img/' + filename 25 return voucher_img 26 except Exception as e: 27 log.error(e) 28 raise serializers.ValidationError("base64转换失败") 29 30 31 class Meta: 32 model = PaymentVoucher 33 exclude = ["addtime", "id"] 34 # fields = '__all__' 35 depth = 0
图片完整性检验参考:这里
原文地址:https://www.cnblogs.com/shuangpang/p/13087955.html
- java 解析 XML实例
- Java 线程内异常处理
- Raphael path 拖动实现
- 黑猿大叔-译文 | TensorFlow实现Batch Normalization
- Java后端WebSocket的Tomcat实现
- jwplayer 隐藏属性方法记载
- TensorFlow从0到1丨开篇:Hello TensorFlow !
- JS原型继承和类式继承
- 在Servlet的init方法中创建线程
- TensorFlow从0到1丨第2篇:TensorFlow核心编程
- AngularJS中的按需加载ocLazyLoad
- AngularJS driective 封装 自动滚动插件
- java类过滤器,防止页面SQL注入
- Web项目添加Maven支持
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- JsonPath实践(二)
- C# 使用OpenCV在一张图片里寻找人脸
- 【DB笔试面试858】在Oracle中,ipcs和ipcrm命令的作用有哪些?
- Qt音视频开发13-mpv录像存储
- Oracle参数解析(spfile)
- ROS2机器人笔记20-08-18
- C sharp实例:华盾武器门数据接收和解析
- JsonPath实践(三)
- 有序链表转换二叉搜索树
- 128. 最长连续序列
- 【DB笔试面试859】在Oracle中,内核参数kernel.shmall、kernel.shmall等分别代表什么含义?
- Nginx配置SSL证书
- java_Object类、日期时间类、System类、包装类
- [周末往期回顾]UNDO_TABLESPACE参数
- WordPress固定链接后404解决方法