summernote复制无法保存图片问题
1、前端初始化
var imgReg = " /<img.*?(?:>|\\/>)/gi";
var srcReg = /src=[\'\"]?([^\'\"]*)[\'\"]?/i;
var reg = "[a-zA-z]+://[^\s]*";
$('.summernote1').summernote({
height: 200,
tabsize: 2,
lang: 'zh-CN',
callbacks : {
onPaste : function(e) {
console.log(e)
setTimeout(function() {
var str = $('.summernote1').summernote('code');
//匹配图片(g表示匹配所有结果i表示区分大小写)
var imgReg = /<img.*?(?:>|\/>)/gi;
//匹配src属性
var srcReg = /src=[\'\"]?([^\'\"]*)[\'\"]?/i;
var arr = str.match(imgReg);
if(arr != null) {
/* var formData = new FormData(); */
for (var i = 0; i < arr.length; i++) {
var src = arr[i].match(srcReg);
//当然你也可以替换src属性
if (src) {
$.ajax({
url : "${pageContext.request.contextPath}/knowledgePoint/saveParseImg.do?id=${knowledgePoint.id}&pathName=" + src[1],
type : 'post',
async: false,
/* data : formData, */
processData : false,
contentType : false,
success : function(data) {
str = str.replace(src[0], 'src="' + data + '"');
$('.summernote1').summernote('code', str);
}
});
}
}
}
}, 1000);
}
}
});
2、后台保存方法
@RequestMapping("/saveParseImg")
@ResponseBody
public String savePasteImg(String id, String pathName, HttpServletRequest request) {
StringBuffer requestURL = request.getRequestURL();
String domainURL = requestURL.delete(requestURL.length() - request.getRequestURI().length(), requestURL.length()).append(request.getServletContext().getContextPath())
.append("/").toString();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String oriFileName = "";
String newFileName = "";
String errorMessage = null;
String type = "attachment";
HttpURLConnection conn = null;
BufferedInputStream bis = null;
FileOutputStream out = null;
InputStream in = null;
try {
String folder = request.getServletContext().getRealPath("");
StringBuffer savePath = new StringBuffer(folder).append(File.separator).append("knowledgebase").append(File.separator).append(id).append(File.separator)
.append(type).append(File.separator);
File f1 = new File(savePath.toString());
if (!f1.exists())
f1.mkdirs();
// 生成目录
String[] arr = pathName.split("/");
oriFileName = arr[arr.length - 1]; //pathName.split("/")[-1];
int index = oriFileName.indexOf(".");
String ext = oriFileName.substring(index);
if (ext.equals(".jpg") || ext.equals(".bmp") || ext.equals(".png") || ext.equals(".gif") || ext.equals(".pdg") || ext.equals(".jpeg")) {
type = "images";
StringBuffer savePath2 = new StringBuffer(folder).append(File.separator).append("knowledgebase").append(File.separator).append(id).append(File.separator).append(type).append(File.separator);
File f2 = new File(savePath2.toString());
if (!f2.exists())
f2.mkdirs();
int idRom = (int) ((Math.random() * 9 + 1) * 10000);
String rom = Integer.toString(idRom);
newFileName = dateFormat.format(new Date()) + rom + ext;
File uploadFile = new File(savePath2 + newFileName);
URL httpUrl = new URL(pathName);
conn = (HttpURLConnection) httpUrl.openConnection();
conn.setRequestMethod("GET");
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.connect();
out = new FileOutputStream(uploadFile);
in = conn.getInputStream();
bis = new BufferedInputStream(in);
byte[] bytes = new byte[1024];
int len = 0;
while ((len = bis.read(bytes)) != -1) {
out.write(bytes, 0, len);
}
StringBuffer url = new StringBuffer(domainURL).append(Constants.KNOWLEDGE_BASE_ROOT_PATH).append(id).append("/").append(type).append("/").append(newFileName);
String urlNew = url.toString();
return urlNew;
} else {
if (ext.equals(".jsp")) {
errorMessage = "拒绝上传JSP类型文件";
}
int idRom = (int) ((Math.random() * 9 + 1) * 10000);
String rom = Integer.toString(idRom);
newFileName = dateFormat.format(new Date()) + rom + ext;
File uploadFile = new File(savePath + newFileName);
URL httpUrl = new URL(pathName);
conn = (HttpURLConnection) httpUrl.openConnection();
conn.setRequestMethod("GET");
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.connect();
out = new FileOutputStream(uploadFile);
in = conn.getInputStream();
bis = new BufferedInputStream(in);
byte[] bytes = new byte[1024];
int len = 0;
while ((len = bis.read(bytes)) != -1) {
out.write(bytes, 0, len);
}
StringBuffer url = new StringBuffer(domainURL).append(Constants.KNOWLEDGE_BASE_ROOT_PATH).append(id).append("/").append(type).append("/").append(newFileName);
String urlNew = url.toString();
return urlNew;
}
} catch (Exception ex) {
errorMessage = "上传失败:" + ex;
} finally {
try {
if(in != null) {
in.close();
}
if(bis != null) {
bis.close();
}
if(out != null) {
out.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return "";
}
summernote复制无法保存图片问题相关推荐
- 移动web开发都会遇到的坑(会持续更新)
1.自适应第一招 <meta name="viewport" content="width=device-width,initial-scale=1.0,user- ...
- 苹果6怎样打开html,苹果iPhone的Safari浏览器使用技巧图解
大多数的 iPhone 用户们都是用的 iOS 系统自带的 Safari 浏览器,不过很多用户们对 Safari 浏览器却不是很熟悉,因为 Safari 毕竟没有国产浏览器这么动我们!这厢脚本之家 ...
- 小程序 getphonenumber_小程序入门,看这一篇就够了!
文章为实战中踩坑经历,以及解决方案.同时是自己的一个项目回顾,在这里分享给大家,希望能帮助到大家.文章内代码需要左右滑动噢~ 登录授权 授权(基本信息,手机号码 )必须使用小程序原生的的button组 ...
- 教你用Python爬取妹子图APP
教你用Python爬美之图APP全站图片 爬取结果 程序只运行了2h,最后认为程序没有问题了就关了(我可不是去杀生去了...... 运行环境 Python 3.5+ Windows 10 VSCode ...
- Android手机哪个悬浮好用,别羡慕苹果了,安卓悬浮神器比 iPhone 好用太多!
都 2021 年了,你还不知道安卓悬浮球是款神器? 就在不久前,小黑被友人如此嘲讽.作为一名经常接触数码科技的资深搞机党,小黑一直对悬浮球应用嗤之以鼻.原因也很简单,悬浮球给小黑带来的体验过于差劲. ...
- android 仿iphone多任务管理效果,别羡慕苹果了,安卓悬浮神器比 iPhone 好用太多!...
原标题:别羡慕苹果了,安卓悬浮神器比 iPhone 好用太多! 都 2021 年了,你还不知道安卓悬浮球是款神器? 就在不久前,小黑被友人如此嘲讽.作为一名经常接触数码科技的资深搞机党,小黑一直对悬浮 ...
- 解决ios与安卓兼容问题 --- css
1:ios端input.button样式不生效 .input{-webkit-appearance: none;/*解决ios样式问题*/ } 2:ios端禁用屏幕缩放 <meta conten ...
- 小程序导出朋友圈海报详细记录
小程序提供了转发给好友的接口,但是没提供分享到朋友圈的接口.于是,只有引导用户保存图片分享到朋友圈. 两种方案:用微信 api 手动保存,用 painter. 微信 api 使用原生接口的话,大致是使 ...
- 微信小程序之canvas画图
开题 前几天接到个需求,长按图片保存到相册,该图片上有用户头像和昵称以及对应的二维码:那这就不能直接当作图片来操作了,要先把整体图片画出来:我当时用的是canvas.效果图如下: canvas dra ...
最新文章
- The Road to learn React书籍学习笔记(第三章)
- 2018,开工第一天
- 缓冲区 cin() getline() getchar()
- 懂集合吗?对,是dart中的集合
- 2 计算机组成原理第二章 数据的表示和运算 定点数运算 浮点数运算
- 360搜索下拉词下拉框获客方案分享
- 如何下载武汉市OSM数据并导出为shp格式
- (转)Windows 7 with SP1中英文原版MSDN下载汇总(全版本收录完毕)
- sqlyog简单入门使用
- Unix编程艺术-原则
- OpenCV C++安装和配置
- QT6程序全屏和隐藏鼠标指针笔记
- 【网络】正向代理和反向代理
- Flutter绘制指南06-颜色的基本操作
- 论文投稿指南——中文核心期刊推荐(环境科学 2)
- 【新手上路】语法入门算法入门题单
- 童年修复系列-PC Engine/TurboGrafx-16介绍及FPGA实现
- 电脑关不掉计算机窗口,电脑关不掉怎么办?
- python 分类变量xgboost_python小白之路:第十九章 XGBoost
- 基于位置服务(Location Based Service)lbs
热门文章
- 出租车计价(15 分)
- 超级块,i节点,数据块,目录块,间接块
- oracle 自连接层次查询,使用自连接查询居然比直接查询效率高很多,何解?
- 防关联浏览器使用案例:安全、电子商务、营销
- 【UE 从零开始制作坦克】1-控制坦克视角
- 2022年华南理工大学计算机考研复试时间
- fastp原理及简单介绍
- daysmatter安卓版_days matter最新版下载-Days Matter倒数日软件下载v2.2.1 安卓版-单机手游网...
- 其他笔记 - 编译Gazebo依赖以及源码过程 - Ubuntu 18.04,gazebo11
- 102届秋季广交会参展准入管理规定 2007年广交会参展准入资质标准