python保存文件到数据库
效果



model
class WEIGUI_IMG(Base):
__tablename__ = 'DW_ZHS_D_WEIGUI_IMG' # 表名 id = Column('img_id', String(), primary_key=True)
img_context = Column(LargeBinary)
file_name = Column('file_name', String(), nullable=True)
后台路由
@api.route('/weigui/img', methods=['POST'])
def weigui_img():
img = request.files['file']
# img.save(img.filename)#直接保存为文件
weigui_img = WEIGUI_IMG()
weigui_img.id = str(uuid.uuid1()).replace('-','')
weigui_img.img_context = img.read()
weigui_img.file_name = img.filename
img.close()
db_session.add(weigui_img)
db_session.commit()
return jsonify({'msg': 'success'})
前端代码页面
<el-form-item label="上传文件">
<el-upload action="http://10.0.0.49:9090/api/v1600/weigui/img" list-type="picture-card" :on-preview="handlePictureCardPreview" :on-remove="handleRemove">
<i class="el-icon-plus"></i>
</el-upload>
</el-form-item> <el-dialog :visible.sync="dialogVisible" top="5vh">
<img width="90%" :src="dialogImageUrl" alt="">
</el-dialog>
前端代码js
dialogImageUrl: '',
dialogVisible: false, handleRemove(file, fileList) {
console.log(file, fileList)
},
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url
this.dialogVisible = true
}
后续,编辑时取出所存图片
效果


发送请求

后台代码
需指定返回图片类型
@api.route('/weigui/img/<id>')
def weigui_img_by_id(id):
textsql = "select * from dw_zhs_d_weigui_img t where t.img_id = :id"
row = db_session.execute(textsql, {'id': id}).fetchone()
return Response(row.img_context, mimetype="image/jpeg")
返回存进去的excel文件
# 获取excel测试
@api.route('/stream/excel')
def weigui_excel():
obj = db_session.query(WEIGUI_IMG).filter(WEIGUI_IMG.file_name.like('%%%s%%' %'xls')).one()
response = Response(obj.img_context, mimetype='text/csv')
response.headers["Content-Disposition"] = "attachment; filename={}".format('1.xls')
return response
前端js代码
//显示编辑界面
handleEdit: function (index, row) {
this.editFormVisible = true
this.editForm = Object.assign({}, row)
this.filelist = []
if(row.imgs){
let temp = row.imgs.split(',')
temp.pop()
temp.forEach(obj=>{
this.filelist.push({
name: '1.png',
url: this.imgUrl+'/'+obj
})
})
}
},
前端html代码
<!--新增界面-->
<el-dialog title="新增" v-model="addFormVisible" :close-on-click-modal="false">
<el-form :model="addForm" label-width="80px" ref="addForm">
<el-form-item label="企业名称">
<el-select v-model="addForm.company_id" filterable remote reserve-keyword placeholder="请输入企业名" :remote-method="remoteMethod" :loading="selectLoading" style="width: 250px">
<el-option v-for="item in options" :key="item.code" :label="item.name" :value="item.code"></el-option>
</el-select>
</el-form-item>
<el-form-item label="违规时间">
<el-date-picker v-model="addForm.weigui_time" style="width: 250px"></el-date-picker>
</el-form-item>
<el-form-item label="违规详情">
<el-input v-model="addForm.detail" auto-complete="off" type="textarea" autosize></el-input>
</el-form-item>
<el-form-item label="备注">
<el-input v-model="addForm.remark" auto-complete="off" type="textarea" autosize></el-input>
</el-form-item>
<el-form-item label="文件">
<el-upload :action="imgUrl" list-type="picture-card" :on-preview="handlePictureCardPreview" :on-remove="handleRemove" ref="uploader_add" :on-success="fileUploadAddSuccess">
<i class="el-icon-plus"></i>
</el-upload>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click.native="addFormVisible = false">取消</el-button>
<el-button type="primary" @click.native="addSubmit" :loading="addLoading">提交</el-button>
</div>
</el-dialog>
python保存文件到数据库的更多相关文章
- PHP 合理配置实现文件上传及保存文件到数据库
合理配置 php.ini 如何配置php.ini实现PHP文件上传功能.其中涉及到php.ini配置文件中的upload_tmp_dir.upload_max_filesize.post_max_si ...
- PostgreSQL保存文件到数据库
1.CREATE TABLE public.t_file ( id INTEGER PRIMARY KEY NOT NULL DEFAULT nextval('t_file_id_seq'::regc ...
- C# 保存文件到数据库
html <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FileUploa ...
- python 保存文件时候, 去除名字中的非法字符
import re def validateTitle(title): rstr = r"[\/\\\:\*\?\"\<\>\|]" # '/ \ : * ? ...
- JAVA上传文件到数据库
前端代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> &l ...
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...
- [转] 三种Python下载url并保存文件的代码
原文 三种Python下载url并保存文件的代码 利用程序自己编写下载文件挺有意思的. Python中最流行的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib ...
- python pandas合并多个excel(xls和xlsx)文件(弹窗选择文件夹和保存文件)
# python pandas合并多个excel(xls和xlsx)文件(弹窗选择文件夹和保存文件) import tkinter as tk from tkinter import filedial ...
- 【网络爬虫入门05】分布式文件存储数据库MongoDB的基本操作与爬虫应用
[网络爬虫入门05]分布式文件存储数据库MongoDB的基本操作与爬虫应用 广东职业技术学院 欧浩源 1.引言 网络爬虫往往需要将大量的数据存储到数据库中,常用的有MySQL.MongoDB和Red ...
随机推荐
- linux常用目录简介
简单归纳: /bin目录(binary)是二进制执行文件目录,主要用于具体应用 /sbin目录(system binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理 附转载一份: /bi ...
- How to intall and configure Haproxy on Centos
Install Haproxy CentOS/RHEL 5 , 32 bit:# rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-r ...
- OpenDCIM-19.01操作手册
OpenDCIM-19.01操作手册 1. 界面标签解析 1.1 用户管理 用户管理 部门管理 用户管理被存在数据表fac_User中,包含以下字段: UserID:是管理员还是用户 Name:报表 ...
- 【BZOJ3653】谈笑风生(长链剖分)
[BZOJ3653]谈笑风生(长链剖分) 题面 BZOJ 洛谷 权限题啊.... 题解 首先根据题目给的条件,发现\(a,b\)都要是\(c\)的父亲. 所以这三个点是树上的一条深度单增的链. 因为\ ...
- rt-thread中动态内存分配之小内存管理模块方法的一点理解
@2019-01-18 [小记] rt-thread中动态内存分配之小内存管理模块方法的一点理解 > 内存初始化后的布局示意 lfree指向内存空闲区首地址 /** * @ingroup Sys ...
- 「SCOI2015」小凸解密码 解题报告
「SCOI2015」小凸解密码 题意:给一个环,定义一段连续的极长\(0\)串为\(0\)区间,定义一个位置的离一个\(0\)区间的距离为这个位置离这个区间中\(0\)的距离的最小值,每次询问一个位置 ...
- JavaWeb项目:在线评测系统
此项目为本人的Java大作业. 项目文件和相关资源已上传到本人的GitHub 一.项目概况 1.1设计内容 一个在线评测系统,分用户和管理员两种身份.用户能够通过注册登录,参加比赛,最后实时得到比赛结 ...
- HDU46093-idiots
题目大意 给一堆边的长度,问从中随机选出三条边来能够组成三角形的概率. 题解 其实就是要求能够组成三角形的方案数.直接从三条边入手问题会很复杂,所以我们可以先求出f[x]表示随便选出两条边长度之和为x ...
- [JSOI2008]Blue Mary的职员分配
由于Blue Mary呕心沥血的管理,Blue Mary的网络公司蒸蒸日上.现在一共拥有了n名职员,可惜没有任何的金钱和声誉.平均每名每天职员都可以给公司带来x单位金钱或者y单位声誉(名利不能双全). ...
- 阶乘函数(factorial)——结果在整型范围内的阶乘计算
定义: 在数学中,正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,计为n!,例如5的阶乘计为5!,其值为120: \[ 5!=5\times 4\times 3\times ...