MySQL 直接存储图片并在 html 页面中展示,点击下载
数据库实体类:
package com.easy.kotlin.picturecrawler.entityimport java.util.*
import javax.persistence.*@Entity
@Table(indexes = arrayOf(Index(name = "idx_url", unique = true, columnList = "url"),Index(name = "idx_category", unique = false, columnList = "category")))
class Image {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)var id: Long = -1@Versionvar version: Int = 0@Column(length = 255, unique = true, nullable = false)var category: String = ""var isFavorite: Int = 0@Column(length = 255, unique = true, nullable = false)var url: String = ""var gmtCreated: Date = Date()var gmtModified: Date = Date()var isDeleted: Int = 0 //1 Yes 0 Novar deletedDate: Date = Date()@Lobvar imageBlob: ByteArray = byteArrayOf()/* 0-Baidu 1-Gank */var sourceType: Int = 0override fun toString(): String {return "Image(id=$id, version=$version, category='$category', isFavorite=$isFavorite, url='$url', gmtCreated=$gmtCreated, gmtModified=$gmtModified, isDeleted=$isDeleted, deletedDate=$deletedDate)"}
}
其中的 @Lob var imageBlob: ByteArray = byteArrayOf() 这个字段存储图片的 Base64内容。
存库代码
val Image = Image()Image.category = "干货集中营福利"Image.url = urlImage.sourceType = 1Image.imageBlob = getByteArray(url)logger.info("Image = ${Image}")imageRepository.save(Image)
其中的getByteArray(url) 函数:
private fun getByteArray(url: String): ByteArray {val urlObj = URL(url)return urlObj.readBytes()}
前端 html 展示图片代码:
{title: '图片',field: 'imageBlob',align: 'center',valign: 'middle',formatter: function (value, row, index) {// var html = "<img onclick=downloadImage('" + value + "') width='100%' src='" + value + "'>"var html = '<img onclick="downBase64Image(this.src)" width="100%" src="https://img-blog.csdnimg.cn/2022010623525946996.jpg' + value + '"/>'return html}}
点击下载 js :
function downloadImage(src) {var $a = $("<a></a>").attr("href", src).attr("download", "sotu.png");$a[0].click();
}function downBase64Image(url) {var blob = base64Img2Blob(url);url = window.URL.createObjectURL(blob);var $a = $("<a></a>").attr("href", url).attr("download", "sotu.png");$a[0].click();
}function base64Img2Blob(code) {var parts = code.split(';base64,');var contentType = parts[0].split(':')[1];var raw = window.atob(parts[1]);var rawLength = raw.length;var uInt8Array = new Uint8Array(rawLength);for (var i = 0; i < rawLength; ++i) {uInt8Array[i] = raw.charCodeAt(i);}return new Blob([uInt8Array], {type: contentType});
}
或者:
function downloadFile(fileName, content) {var aLink = document.createElement('a');var blob = base64Img2Blob(content); //new Blob([content]);var evt = document.createEvent("HTMLEvents");evt.initEvent("click", false, false);//initEvent 不加后两个参数在FF下会报错aLink.download = fileName;aLink.href = URL.createObjectURL(blob);aLink.dispatchEvent(evt);
}
MySQL 直接存储图片并在 html 页面中展示,点击下载相关推荐
- html显示mysql图片路径_MySQL MySQL 直接存储图片并在 html 页面中展示,点击下载 _好机友...
数据库实体类:package com.easy.kotlin.picturecrawler.entity import java.util.* import javax.persistence.* @ ...
- 将页面中的指定 div 下载为图片
文章目录 1. 下载页面div为本地图片 2. 下载页面 div 为本地图片并添加水印 1. 下载页面div为本地图片 要将页面中的指定 div 下载为图片,可以使用 JavaScript 的 htm ...
- javaWeb-百斯特电子商城-在jsp页面中侧边栏点击,右边进行变化(java实现)(持续完善)
(javaWeb-百斯特电子商城-在jsp页面中侧边栏点击,右边进行变化(java实现)(持续完善) 1.问题描述: 2.开发环境:+解决思想+建议+注意 3.问题解决 3.1项目结构 3.资源下载( ...
- 如何把python可视化到前端_python数据可视化的效果如何在web页面中展示_北京可视化股票...
有什么APP可以展示可视化的任务进度 可视化任务进度软件,使用敬业签,具体可视有事项开始时间,进度及人.还有结束时间以及人员处理速等等,更多功能如下: 1.敬业签是一款功能比较全面的桌面便签软件,分为 ...
- java mysql blob 存储图片_Java操作mysql存储图片
http://bbs.chinaunix.net/archiver/tid-2289421.html 1把图片当成一个二进制流就可以了 .mysql中有可以存储很大的2进制流文件.用的类型是: 我们要 ...
- Packet for query is too large(1767212 1048576)mysql在存储图片时提示图片过大
原网址:http://blog.csdn.net/bigbird2012/article/details/6304417 错误现象:Packet for query is too large(1767 ...
- php中使用mysql_fetch_array输出数组至页面中展示
用的是CI框架,很好的MVC结构 在Model层 1 public function showProteinCategory(){ 2 $sql = "SELECT DISTINCT pro ...
- 在html页面中展示pdf文件,实现在线阅读
参考文章:1.http://blog.csdn.net/broze/article/details/6743314 2.http://www.pdfobject.com/ ...
- 页面中展示PDF(转成Swf文件)
由于直接在页面上展示PDF会有编码困难及不安全等问题,所以想到先利用SWFTOOLS工具把PDF转成SWF格式的Flash文件然后在页面上利用ASP.NET自带的Flash播放器展示Flash文件,这 ...
最新文章
- 手机端校验的那些事情(简单实例)
- 学习OpenStack之 (4): Linux 磁盘、分区、挂载、逻辑卷管理 (Logical Volume Manager)
- 终止一切网上销售和广告?电子烟悦刻天猫旗舰店却仍可购买
- mysql、orcl中database、schema、user之间的关系
- 从高斯消元到矩阵的三角分解(LU)
- JavaWeb:重定向(redirect)和转发(forward)的区别
- JavaSE基础——网络编程
- 1051. Pop Sequence (25)
- 架构之美第八章-软件架构的含义
- afudos备份bios不动_afudos备份bios不动_老鸟经验之谈刷坏BIOS后的2种恢复方法
- 法国警告Nobelium网络间谍攻击法国组织
- 细数SAP Business One主流实施与服务商
- 测试工程师如何规划自己的职业生涯
- 一键彻底关闭Win10自带Windows Defender杀毒软件
- CSS 选择器 CSS3选择器
- ==和equals判断两个字符串是否相等
- android 模仿微信读书,Flutter 模仿微信读书实现案例
- 逻辑回归三部曲——逻辑回归(logistics regression)原理-让你彻底读懂逻辑回归
- linux ps w,Linux监控命令—who,w,ps
- 安装Python2.7
热门文章
- php yii 命令行,命令行模式(Command)
- 计算机多重网络intnet,南昌大学计算机网络实验(全).doc
- mysql索引_MySQL索引介绍和实战
- matlab 分隔线,matlab字符分割方法
- mysql 5.7 ssd_6T!阿里云MySQL 5.7 存储空间再刷新高
- vuex 源码分析_前端入门之(vuex-router-sync解析)
- ajax为什么返回html标签,AJAX与特定值后返回的HTML标签
- 《软件项目管理(第二版)》期中考试试题总结/复习资料
- poj 1386 Play on Words(有向图欧拉回路)
- js中的new file_JS中的new操作符