js实现ctrl+v粘贴上传图片(兼容chrome、firefox、ie11)

原理分析

提取操作:复制=>粘贴=>上传
在这个操作过程中,我们需要做的就是:监听粘贴事件=>获取剪贴板里的内容=>发请求上传
为方便理解下文,需要先明白几点:

我们只能上传网页图(在网页上右键图片,然后复制)和截图(截图工具截的图片,eg:qq截图),不能粘贴上传系统里的图片(从桌面上、硬盘里复制),他们是存在完全不同的地方的。
截图工具截的图与在网页点击右键复制的图是有些不同的,因此处理方式也不一样。
知悉paste event这个事件:当进行粘贴(右键paste/ctrl+v)操作时,该动作将触发名为’paste’的剪贴板事件,这个事件的触发是在剪贴板里的数据插入到目标元素之前。如果目标元素(光标所在位置)是可编辑的元素(eg:设置了contenteditable属性的div。textarea并不行。),粘贴动作将把剪贴板里的数据,以最合适的格式,插入到目标元素里;如果目标元素不可编辑,则不会插入数据,但依然触发paste event。数据在粘贴的过程中是只读的。此段是翻译于w3.org_the-paste-action。
可惜的是,经过试验,发现chrome(当前最新版)、firefox(当前最新版)、ie11对paste事件的实现并不是完全按照w3c来的,各自也有区别(w3c的paste标准也因此只是草案阶段)。

龙生   11 Aug 2023
View Details

Nginx代理mysql端口

Nginx代理mysql端口
1、安装1.9以上版本nginx并配置stream模块。
stream{
upstream mysqlBackend{
hash $remote_addr consistent;
#原数据库的ip及端口
server 127.0.0.1:3306;
}

server {
#需要路由的端口
listen 13306;
proxy_pass mysqlBackend;
}
}

龙生   11 Aug 2023
View Details

Centos离线安装openJDK1.8(适用于离线yum安装其它软件)

总体思路
1.在能够联网的机器上使用repotrack工具下载软件所需的所有依赖,并使用createrepo工具创建yum仓库。
2.将yum仓库文件夹打包上传到没有互联网环境的服务器上,配置成本地yum仓库,然后就可以像互联网环境下使用yum命令一样安装软件了(不止适用于openjdk,其它软件也可以用此方法)

龙生   11 Aug 2023
View Details

8 款免费的 MySQL 数据库建模工具

MySQL Workbench
SQL Power Architect
PDMan
RISE
GenMyModel
DB Designer
dbdiagram.io
Freedgo

龙生   05 Aug 2023
View Details

Mybatis中强大的resultMap

在Mybatis中,有一个强大的功能元素resultMap。当我们希望将JDBC ResultSets中的数据,转化为合理的Java对象时,你就能感受到它的非凡之处。正如其官方所述的那样:
resultMap元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来,并在一些情形下允许你进行一些 JDBC 不支持的操作。实际上,在为一些比如连接的复杂语句编写映射代码的时候,一份 resultMap 能够代替实现同等功能的长达数千行的代码。ResultMap 的设计思想是,对于简单的语句根本不需要配置显式的结果映射,而对于复杂一点的语句只需要描述它们的关系就行了。

龙生   05 Aug 2023
View Details

Spring boot @Scheduled(cron = "* * * * * *") cron表达式详解

“30 * * * * ?” 每半分钟触发任务
“30 10 * * * ?” 每小时的10分30秒触发任务
“30 10 1 * * ?” 每天1点10分30秒触发任务
“30 10 1 20 * ?” 每月20号1点10分30秒触发任务
“30 10 1 20 10 ? *” 每年10月20号1点10分30秒触发任务
“30 10 1 20 10 ? 2011” 2011年10月20号1点10分30秒触发任务
“30 10 1 ? 10 * 2011” 2011年10月每天1点10分30秒触发任务
“30 10 1 ? 10 SUN 2011” 2011年10月每周日1点10分30秒触发任务
“15,30,45 * * * * ?” 每15秒,30秒,45秒时触发任务
“15-45 * * * * ?” 15到45秒内,每秒都触发任务
“15/5 * * * * ?” 每分钟的每15秒开始触发,每隔5秒触发一次
“15-30/5 * * * * ?” 每分钟的15秒到30秒之间开始触发,每隔5秒触发一次
“0 0/3 * * * ?” 每小时的第0分0秒开始,每三分钟触发一次
“0 15 10 ? * MON-FRI” 星期一到星期五的10点15分0秒触发任务
“0 15 10 L * ?” 每个月最后一天的10点15分0秒触发任务
“0 15 10 LW * ?” 每个月最后一个工作日的10点15分0秒触发任务
“0 15 10 ? * 5L” 每个月最后一个星期四的10点15分0秒触发任务
“0 15 10 ? * 5#3” 每个月第三周的星期四的10点15分0秒触发任务

龙生   03 Aug 2023
View Details

MyBatis批量插入的五种方式归纳总结

MyBatis利用For循环批量插入
MyBatis的手动批量提交
MyBatis以集合方式批量新增
MyBatis-Plus提供的SaveBatch方法
MyBatis-Plus提供的InsertBatchSomeColumn方法

龙生   01 Aug 2023
View Details

java实现解析XML的4种方式

1、DOM方式解析
2、SAX方式解析
3、JDOM方式解析
4、Dom4j方式解析

龙生   01 Aug 2023
View Details

ASP.NET Core定时之Quartz.NET使用

一、什么是Quartz.NET?
Quartz.NET 是一个功能齐全的开源作业调度系统,可用于从最小的应用程序到大型企业系统。

Quartz.NET是纯净的,它是一个.Net程序集,是非常流行的Java作业调度系统Quartz的C#实现。

二、Quartz.NET可以做什么?
Quartz.NET很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等。

Quartz.NET允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。

Quartz.NET的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业。

我此次选择Quartz.Net使用的版本是 3.3.3

这里强调一点:3.x的版本与2.x的版本使用方式有一定的差别

龙生   28 Jul 2023
View Details

国家中医药管理局 国家卫生健康委员会关于印发《中医病证分类与代码》和《中医临床诊疗术语》的通知

中医疾病及证候分类与代码、中医临床诊疗术语、病案首页等是推进中医医疗服务规范化、标准化管理的重要基础。近年来,国家卫生健康委、国家中医药局大力加强病案管理,先后明确要求医疗机构在病案书写中统一使用ICD-9、ICD-10,中医病证诊断编码统一使用《中医病证分类与代码》。《国际疾病分类第十一次修订本(ICD-11)》包含了传统医学章节,为做好中医病症分类与代码和ICD-11的衔接,推动ICD-11传统章节本土化,国家中医药局修订了《中医病证分类与代码》和《中医临床诊疗术语》。推广使用新修订的《中医病证分类与代码》和《中医临床诊疗术语》,对提高中医医疗服务标准化水平和管理效率,促进中医诊疗信息有效互联互通具有积极意义。

龙生   27 Jul 2023
View Details
1 37 38 39 410