效果

model

  1. class WEIGUI_IMG(Base):
  2. __tablename__ = 'DW_ZHS_D_WEIGUI_IMG' # 表名
  3.  
  4. id = Column('img_id', String(), primary_key=True)
  5. img_context = Column(LargeBinary)
  6. file_name = Column('file_name', String(), nullable=True)

后台路由

  1. @api.route('/weigui/img', methods=['POST'])
  2. def weigui_img():
  3. img = request.files['file']
  4. # img.save(img.filename)#直接保存为文件
  5. weigui_img = WEIGUI_IMG()
  6. weigui_img.id = str(uuid.uuid1()).replace('-','')
  7. weigui_img.img_context = img.read()
  8. weigui_img.file_name = img.filename
  9. img.close()
  10. db_session.add(weigui_img)
  11. db_session.commit()
  12. return jsonify({'msg': 'success'})

前端代码页面

  1. <el-form-item label="上传文件">
  2. <el-upload action="http://10.0.0.49:9090/api/v1600/weigui/img" list-type="picture-card" :on-preview="handlePictureCardPreview" :on-remove="handleRemove">
  3. <i class="el-icon-plus"></i>
  4. </el-upload>
  5. </el-form-item>
  6.  
  7. <el-dialog :visible.sync="dialogVisible" top="5vh">
  8. <img width="90%" :src="dialogImageUrl" alt="">
  9. </el-dialog>

前端代码js

  1. dialogImageUrl: '',
  2. dialogVisible: false,
  3.  
  4. handleRemove(file, fileList) {
  5. console.log(file, fileList)
  6. },
  7. handlePictureCardPreview(file) {
  8. this.dialogImageUrl = file.url
  9. this.dialogVisible = true
  10. }

后续,编辑时取出所存图片

效果

发送请求

后台代码

需指定返回图片类型

  1. @api.route('/weigui/img/<id>')
  2. def weigui_img_by_id(id):
  3. textsql = "select * from dw_zhs_d_weigui_img t where t.img_id = :id"
  4. row = db_session.execute(textsql, {'id': id}).fetchone()
  5. return Response(row.img_context, mimetype="image/jpeg")

返回存进去的excel文件

  1. # 获取excel测试
  2. @api.route('/stream/excel')
  3. def weigui_excel():
  4. obj = db_session.query(WEIGUI_IMG).filter(WEIGUI_IMG.file_name.like('%%%s%%' %'xls')).one()
  5. response = Response(obj.img_context, mimetype='text/csv')
  6. response.headers["Content-Disposition"] = "attachment; filename={}".format('1.xls')
  7. return response

前端js代码

  1. //显示编辑界面
  2. handleEdit: function (index, row) {
  3. this.editFormVisible = true
  4. this.editForm = Object.assign({}, row)
  5. this.filelist = []
  6. if(row.imgs){
  7. let temp = row.imgs.split(',')
  8. temp.pop()
  9. temp.forEach(obj=>{
  10. this.filelist.push({
  11. name: '1.png',
  12. url: this.imgUrl+'/'+obj
  13. })
  14. })
  15. }
  16. },

前端html代码

  1. <!--新增界面-->
  2. <el-dialog title="新增" v-model="addFormVisible" :close-on-click-modal="false">
  3. <el-form :model="addForm" label-width="80px" ref="addForm">
  4. <el-form-item label="企业名称">
  5. <el-select v-model="addForm.company_id" filterable remote reserve-keyword placeholder="请输入企业名" :remote-method="remoteMethod" :loading="selectLoading" style="width: 250px">
  6. <el-option v-for="item in options" :key="item.code" :label="item.name" :value="item.code"></el-option>
  7. </el-select>
  8. </el-form-item>
  9. <el-form-item label="违规时间">
  10. <el-date-picker v-model="addForm.weigui_time" style="width: 250px"></el-date-picker>
  11. </el-form-item>
  12. <el-form-item label="违规详情">
  13. <el-input v-model="addForm.detail" auto-complete="off" type="textarea" autosize></el-input>
  14. </el-form-item>
  15. <el-form-item label="备注">
  16. <el-input v-model="addForm.remark" auto-complete="off" type="textarea" autosize></el-input>
  17. </el-form-item>
  18. <el-form-item label="文件">
  19. <el-upload :action="imgUrl" list-type="picture-card" :on-preview="handlePictureCardPreview" :on-remove="handleRemove" ref="uploader_add" :on-success="fileUploadAddSuccess">
  20. <i class="el-icon-plus"></i>
  21. </el-upload>
  22. </el-form-item>
  23. </el-form>
  24. <div slot="footer" class="dialog-footer">
  25. <el-button @click.native="addFormVisible = false">取消</el-button>
  26. <el-button type="primary" @click.native="addSubmit" :loading="addLoading">提交</el-button>
  27. </div>
  28. </el-dialog>

python保存文件到数据库的更多相关文章

  1. PHP 合理配置实现文件上传及保存文件到数据库

    合理配置 php.ini 如何配置php.ini实现PHP文件上传功能.其中涉及到php.ini配置文件中的upload_tmp_dir.upload_max_filesize.post_max_si ...

  2. PostgreSQL保存文件到数据库

    1.CREATE TABLE public.t_file ( id INTEGER PRIMARY KEY NOT NULL DEFAULT nextval('t_file_id_seq'::regc ...

  3. C# 保存文件到数据库

    html <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FileUploa ...

  4. python 保存文件时候, 去除名字中的非法字符

    import re def validateTitle(title): rstr = r"[\/\\\:\*\?\"\<\>\|]" # '/ \ : * ? ...

  5. JAVA上传文件到数据库

    前端代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> &l ...

  6. 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

    1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...

  7. [转] 三种Python下载url并保存文件的代码

    原文 三种Python下载url并保存文件的代码 利用程序自己编写下载文件挺有意思的. Python中最流行的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib ...

  8. python pandas合并多个excel(xls和xlsx)文件(弹窗选择文件夹和保存文件)

    # python pandas合并多个excel(xls和xlsx)文件(弹窗选择文件夹和保存文件) import tkinter as tk from tkinter import filedial ...

  9. 【网络爬虫入门05】分布式文件存储数据库MongoDB的基本操作与爬虫应用

    [网络爬虫入门05]分布式文件存储数据库MongoDB的基本操作与爬虫应用 广东职业技术学院  欧浩源 1.引言 网络爬虫往往需要将大量的数据存储到数据库中,常用的有MySQL.MongoDB和Red ...

随机推荐

  1. python学习日记(编码再回顾)

    当想从一种编码方式转换为另一种编码方式时,执行的就是以上步骤. 在python3里面,默认编码方式是unicode,所以无需解码(decode),直接编码(encode)成你想要的编码方式就可以了. ...

  2. zabbix 自定义 windows 监控项

    zabbix获取windows服务器上数据C:\zabbix_agents\conf\zabbix_agentd.win.confUserParameter=conncount,d:\\tools\\ ...

  3. PKUWC2019 凉凉记

    请配合 BGM 食用. 菜就是菜,说什么都是借口. Day 0 前一天先到纪中报道,高铁上打了一会单机膈膜,然后又打了一遍 \(FFT\) 板子,就到了中山. 到了后,发现气温骤然升高,马上 脱 换裤 ...

  4. 【BZOJ4771】七彩树(主席树)

    [BZOJ4771]七彩树(主席树) 题面 BZOJ 题解 如果没有深度限制,每次只询问子树内的颜色个数,除了树套树\(dfs\)序加前驱或者后继强行二维数点之外,还有这样一种做法: 把所有相同颜色的 ...

  5. 【转】无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) ubuntu 安装vim 及遇到的错误处理

    今天,处理完问题,闲来无事,打算在虚拟机中的Ubuntu中练习shell脚本编写. 无奈,虚拟机系统所装的只有vi,这个编辑软件对于我们来说还是比较不习惯的,所以打算安装vim.好了,闲言少叙. 安装 ...

  6. a span做成按钮样式不选中文字

    a,span做成按钮样式时,文字会被选中.加以下CSS可以让其不选中.测试三大浏览器都可以 .button { display: inline-block; -moz-user-select: non ...

  7. 【原创】tyvj1038 忠诚 & 计蒜客 管家的忠诚 & 线段树(单点更新,区间查询)

    最简单的线段树之一,中文题目,不翻译.... 注释讲的比较少,这已经是最简单的线段树,如果看不懂真的说明最基础的理论没明白 推荐一篇文章http://www.cnblogs.com/liwenchi/ ...

  8. JQuery选择器,事件,DOM操作,动画

    JQuery是一个JavaScript代码库,或者是JavaScript框架: 1.选择器:(和CSS选择器一致) 基本选择器:ID选择器$('#div1');Class选择器('.div1');标签 ...

  9. 洛谷P1731 生日蛋糕

    李煜东太神了啊啊啊啊啊! 生日蛋糕,著名搜索神题(还有虫食算). 当年的我30分.... 这哥们的程序0ms... 还有他的树网的核也巨TM神. 疯狂剪枝! DFS(int d, int s, int ...

  10. A1124. Raffle for Weibo Followers

    John got a full mark on PAT. He was so happy that he decided to hold a raffle(抽奖) for his followers ...