paste image on chrome
This commit is contained in:
@ -20,7 +20,7 @@ func (c File) UploadImage(renderHtml string) revel.Result {
|
|||||||
renderHtml = "file/image.html"
|
renderHtml = "file/image.html"
|
||||||
}
|
}
|
||||||
|
|
||||||
re := c.uploadImage();
|
re := c.uploadImage("");
|
||||||
|
|
||||||
c.RenderArgs["fileUrlPath"] = siteUrl + re.Id
|
c.RenderArgs["fileUrlPath"] = siteUrl + re.Id
|
||||||
c.RenderArgs["resultCode"] = re.Code
|
c.RenderArgs["resultCode"] = re.Code
|
||||||
@ -34,24 +34,26 @@ func (c File) UploadBlogLogo() revel.Result {
|
|||||||
return c.UploadImage("file/blog_logo.html");
|
return c.UploadImage("file/blog_logo.html");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 拖拉上传
|
// 拖拉上传, pasteImage
|
||||||
func (c File) UploadImageJson(renderHtml string) revel.Result {
|
func (c File) UploadImageJson(renderHtml, from string) revel.Result {
|
||||||
re := c.uploadImage();
|
re := c.uploadImage(from);
|
||||||
re.Id = siteUrl + re.Id
|
re.Id = siteUrl + re.Id
|
||||||
// re.Id = re.Id
|
// re.Id = re.Id
|
||||||
return c.RenderJson(re)
|
return c.RenderJson(re)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 上传图片, 公用方法
|
// 上传图片, 公用方法
|
||||||
func (c File) uploadImage() (re info.Re) {
|
func (c File) uploadImage(from string) (re info.Re) {
|
||||||
var fileUrlPath = ""
|
var fileUrlPath = ""
|
||||||
var resultCode = 0 // 1表示正常
|
var resultCode = 0 // 1表示正常
|
||||||
var resultMsg = "内部错误" // 错误信息
|
var resultMsg = "内部错误" // 错误信息
|
||||||
|
var Ok = false
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
re.Id = fileUrlPath
|
re.Id = fileUrlPath
|
||||||
re.Code = resultCode
|
re.Code = resultCode
|
||||||
re.Msg = resultMsg
|
re.Msg = resultMsg
|
||||||
|
re.Ok = Ok
|
||||||
}()
|
}()
|
||||||
|
|
||||||
file, handel, err := c.Request.FormFile("file")
|
file, handel, err := c.Request.FormFile("file")
|
||||||
@ -69,11 +71,18 @@ func (c File) uploadImage() (re info.Re) {
|
|||||||
}
|
}
|
||||||
// 生成新的文件名
|
// 生成新的文件名
|
||||||
filename := handel.Filename
|
filename := handel.Filename
|
||||||
_, ext := SplitFilename(filename)
|
|
||||||
if(ext != ".gif" && ext != ".jpg" && ext != ".png" && ext != ".bmp" && ext != ".jpeg") {
|
var ext string;
|
||||||
resultMsg = "不是图片"
|
if from == "pasteImage" {
|
||||||
return re
|
ext = ".png"; // TODO 可能不是png类型
|
||||||
|
} else {
|
||||||
|
_, ext = SplitFilename(filename)
|
||||||
|
if(ext != ".gif" && ext != ".jpg" && ext != ".png" && ext != ".bmp" && ext != ".jpeg") {
|
||||||
|
resultMsg = "不是图片"
|
||||||
|
return re
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
filename = NewGuid() + ext
|
filename = NewGuid() + ext
|
||||||
data, err := ioutil.ReadAll(file)
|
data, err := ioutil.ReadAll(file)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -99,6 +108,7 @@ func (c File) uploadImage() (re info.Re) {
|
|||||||
|
|
||||||
fileUrlPath += "/" + GetFilename(toPathGif)
|
fileUrlPath += "/" + GetFilename(toPathGif)
|
||||||
resultCode = 1
|
resultCode = 1
|
||||||
|
Ok = true
|
||||||
resultMsg = "上传成功!"
|
resultMsg = "上传成功!"
|
||||||
|
|
||||||
return re
|
return re
|
||||||
|
@ -928,7 +928,7 @@ LEA.locale = "{{.locale}}";
|
|||||||
<script src="/js/jQuery-slimScroll-1.3.0/jquery.slimscroll.js"></script>
|
<script src="/js/jQuery-slimScroll-1.3.0/jquery.slimscroll.js"></script>
|
||||||
<script src="js/app/page.js"></script>
|
<script src="js/app/page.js"></script>
|
||||||
|
|
||||||
<script src="tinymce/tinymce.min.js"></script>
|
<script src="tinymce/tinymce.js"></script>
|
||||||
<script src="js/jquery-cookie-min.js"></script>
|
<script src="js/jquery-cookie-min.js"></script>
|
||||||
<script src="js/bootstrap-min.js"></script>
|
<script src="js/bootstrap-min.js"></script>
|
||||||
<script src="js/app/note.js"></script>
|
<script src="js/app/note.js"></script>
|
||||||
|
@ -928,7 +928,7 @@ LEA.locale = "{{.locale}}";
|
|||||||
<script src="/js/jQuery-slimScroll-1.3.0/jquery.slimscroll.js"></script>
|
<script src="/js/jQuery-slimScroll-1.3.0/jquery.slimscroll.js"></script>
|
||||||
<script src="js/app/page-min.js"></script>
|
<script src="js/app/page-min.js"></script>
|
||||||
|
|
||||||
<script src="tinymce/tinymce.min.js"></script>
|
<script src="tinymce/tinymce.js"></script>
|
||||||
<script src="js/jquery-cookie-min.js"></script>
|
<script src="js/jquery-cookie-min.js"></script>
|
||||||
<script src="js/bootstrap-min.js"></script>
|
<script src="js/bootstrap-min.js"></script>
|
||||||
<script src="js/app/note-min.js"></script>
|
<script src="js/app/note-min.js"></script>
|
||||||
|
File diff suppressed because one or more lines are too long
2
public/js/common-min.js
vendored
2
public/js/common-min.js
vendored
File diff suppressed because one or more lines are too long
@ -1,4 +1,9 @@
|
|||||||
// --------------------- 命名空间
|
// leanote 通用方法
|
||||||
|
|
||||||
|
//--------------
|
||||||
|
// 命名空间
|
||||||
|
//--------------
|
||||||
|
|
||||||
// 最上级变量
|
// 最上级变量
|
||||||
var LEA = {};
|
var LEA = {};
|
||||||
// 命名空间
|
// 命名空间
|
||||||
@ -64,7 +69,7 @@ function arrayEqual(a, b) {
|
|||||||
return a.join(",") == b.join(",");
|
return a.join(",") == b.join(",");
|
||||||
}
|
}
|
||||||
|
|
||||||
//是否是数组
|
// 是否是数组
|
||||||
function isArray(obj) {
|
function isArray(obj) {
|
||||||
return Object.prototype.toString.call(obj) === '[object Array]';
|
return Object.prototype.toString.call(obj) === '[object Array]';
|
||||||
}
|
}
|
||||||
@ -419,32 +424,6 @@ function enableEditor() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------
|
|
||||||
// notify
|
|
||||||
$(function() {
|
|
||||||
if($.pnotify) {
|
|
||||||
$.pnotify.defaults.delay = 1000;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
function notifyInfo(text) {
|
|
||||||
$.pnotify({
|
|
||||||
title: '通知',
|
|
||||||
text: text,
|
|
||||||
type: 'info',
|
|
||||||
styling: 'bootstrap'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
function notifyError(text) {
|
|
||||||
$.pnotify.defaults.delay = 2000
|
|
||||||
$.pnotify({
|
|
||||||
title: '通知',
|
|
||||||
text: text,
|
|
||||||
type: 'error',
|
|
||||||
styling: 'bootstrap'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------
|
//-----------
|
||||||
// dialog
|
// dialog
|
||||||
//-----------
|
//-----------
|
||||||
@ -500,6 +479,7 @@ function hideDialogRemote() {
|
|||||||
}
|
}
|
||||||
//---------------
|
//---------------
|
||||||
// notify
|
// notify
|
||||||
|
// 没用
|
||||||
$(function() {
|
$(function() {
|
||||||
if($.pnotify) {
|
if($.pnotify) {
|
||||||
$.pnotify.defaults.delay = 1000;
|
$.pnotify.defaults.delay = 1000;
|
||||||
@ -808,7 +788,7 @@ function reIsOk(re) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// marker
|
// marker
|
||||||
// 下拉扩展工具栏用, 点击文档导航用
|
// 下拉扩展工具栏用, 点击文档导航用, 切换编辑模式时用
|
||||||
LEA.bookmark = null;
|
LEA.bookmark = null;
|
||||||
LEA.hasBookmark = false;
|
LEA.hasBookmark = false;
|
||||||
function saveBookmark() {
|
function saveBookmark() {
|
||||||
|
@ -238,6 +238,93 @@ define("tinymce/pasteplugin/Clipboard", [
|
|||||||
createPasteBin();
|
createPasteBin();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 当url改变时, 得到图片的大小 copy from leanote_image
|
||||||
|
function getImageSize(url, callback) {
|
||||||
|
var img = document.createElement('img');
|
||||||
|
|
||||||
|
function done(width, height) {
|
||||||
|
img.parentNode.removeChild(img);
|
||||||
|
callback({width: width, height: height});
|
||||||
|
}
|
||||||
|
|
||||||
|
img.onload = function() {
|
||||||
|
done(img.clientWidth, img.clientHeight);
|
||||||
|
};
|
||||||
|
|
||||||
|
img.onerror = function() {
|
||||||
|
done();
|
||||||
|
};
|
||||||
|
|
||||||
|
img.src = url;
|
||||||
|
|
||||||
|
var style = img.style;
|
||||||
|
style.visibility = 'hidden';
|
||||||
|
style.position = 'fixed';
|
||||||
|
style.bottom = style.left = 0;
|
||||||
|
style.width = style.height = 'auto';
|
||||||
|
|
||||||
|
document.body.appendChild(img);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 上传图片
|
||||||
|
function pasteImage(event) {
|
||||||
|
// use event.originalEvent.clipboard for newer chrome versions
|
||||||
|
var items = (event.clipboardData || event.originalEvent.clipboardData).items; // 可能有多个file, 找到属于图片的file
|
||||||
|
log(JSON.stringify(items)); // will give you the mime types
|
||||||
|
// find pasted image among pasted items
|
||||||
|
var blob;
|
||||||
|
for (var i = 0; i < items.length; i++) {
|
||||||
|
if (items[i].type.indexOf("image") === 0) {
|
||||||
|
blob = items[i].getAsFile();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// load image if there is a pasted image
|
||||||
|
if (blob) {
|
||||||
|
log(blob);
|
||||||
|
var reader = new FileReader();
|
||||||
|
reader.onload = function(event) {
|
||||||
|
// 上传之
|
||||||
|
var c = new FormData;
|
||||||
|
c.append("from", "pasteImage");
|
||||||
|
c.append("file", blob);
|
||||||
|
// var d;
|
||||||
|
// d = $.ajaxSettings.xhr();
|
||||||
|
// d.withCredentials = i;var d = {};
|
||||||
|
|
||||||
|
// 先显示loading...
|
||||||
|
var editor = tinymce.EditorManager.activeEditor;
|
||||||
|
var dom = editor.dom;
|
||||||
|
var d = {};
|
||||||
|
d.id = '__mcenew';
|
||||||
|
d.src = "http://leanote.com/images/loading-24.gif";
|
||||||
|
editor.insertContent(dom.createHTML('img', d));
|
||||||
|
var imgElm = dom.get('__mcenew');
|
||||||
|
$.ajax({url: "/file/uploadImageJson", contentType:false, processData:false , data: c, type: "POST"}
|
||||||
|
).done(function(re) {
|
||||||
|
if(!re || typeof re != "object" || !re.Ok) {
|
||||||
|
// 删除
|
||||||
|
dom.remove(imgElm);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 这里, 如果图片宽度过大, 这里设置成500px
|
||||||
|
getImageSize(re.Id, function(wh) {
|
||||||
|
// life 4/25
|
||||||
|
if(wh && wh.width) {
|
||||||
|
if(wh.width > 600) {
|
||||||
|
wh.width = 600;
|
||||||
|
}
|
||||||
|
d.width = wh.width;
|
||||||
|
dom.setAttrib(imgElm, 'width', d.width);
|
||||||
|
}
|
||||||
|
dom.setAttrib(imgElm, 'src', re.Id);
|
||||||
|
});
|
||||||
|
dom.setAttrib(imgElm, 'id', null);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
reader.readAsDataURL(blob);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
editor.on('paste', function(e) {
|
editor.on('paste', function(e) {
|
||||||
var clipboardContent = getClipboardContent(e);
|
var clipboardContent = getClipboardContent(e);
|
||||||
@ -292,6 +379,12 @@ define("tinymce/pasteplugin/Clipboard", [
|
|||||||
}
|
}
|
||||||
}, 0);
|
}, 0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//-----------
|
||||||
|
// paste image
|
||||||
|
try {
|
||||||
|
pasteImage(e);
|
||||||
|
} catch(e) {};
|
||||||
|
|
||||||
self.pasteHtml = pasteHtml;
|
self.pasteHtml = pasteHtml;
|
||||||
self.pasteText = pasteText;
|
self.pasteText = pasteText;
|
||||||
|
@ -117,4 +117,4 @@
|
|||||||
writeScripts();
|
writeScripts();
|
||||||
})(this);
|
})(this);
|
||||||
|
|
||||||
// $hash: 7d2f54c70d38a608b043c257f108506f
|
// $hash: 5b06d9e98fb338fd1b0ff7ee116ca480
|
@ -423,6 +423,93 @@ define("tinymce/pasteplugin/Clipboard", [
|
|||||||
createPasteBin();
|
createPasteBin();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 当url改变时, 得到图片的大小 copy from leanote_image
|
||||||
|
function getImageSize(url, callback) {
|
||||||
|
var img = document.createElement('img');
|
||||||
|
|
||||||
|
function done(width, height) {
|
||||||
|
img.parentNode.removeChild(img);
|
||||||
|
callback({width: width, height: height});
|
||||||
|
}
|
||||||
|
|
||||||
|
img.onload = function() {
|
||||||
|
done(img.clientWidth, img.clientHeight);
|
||||||
|
};
|
||||||
|
|
||||||
|
img.onerror = function() {
|
||||||
|
done();
|
||||||
|
};
|
||||||
|
|
||||||
|
img.src = url;
|
||||||
|
|
||||||
|
var style = img.style;
|
||||||
|
style.visibility = 'hidden';
|
||||||
|
style.position = 'fixed';
|
||||||
|
style.bottom = style.left = 0;
|
||||||
|
style.width = style.height = 'auto';
|
||||||
|
|
||||||
|
document.body.appendChild(img);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 上传图片
|
||||||
|
function pasteImage(event) {
|
||||||
|
// use event.originalEvent.clipboard for newer chrome versions
|
||||||
|
var items = (event.clipboardData || event.originalEvent.clipboardData).items; // 可能有多个file, 找到属于图片的file
|
||||||
|
log(JSON.stringify(items)); // will give you the mime types
|
||||||
|
// find pasted image among pasted items
|
||||||
|
var blob;
|
||||||
|
for (var i = 0; i < items.length; i++) {
|
||||||
|
if (items[i].type.indexOf("image") === 0) {
|
||||||
|
blob = items[i].getAsFile();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// load image if there is a pasted image
|
||||||
|
if (blob) {
|
||||||
|
log(blob);
|
||||||
|
var reader = new FileReader();
|
||||||
|
reader.onload = function(event) {
|
||||||
|
// 上传之
|
||||||
|
var c = new FormData;
|
||||||
|
c.append("from", "pasteImage");
|
||||||
|
c.append("file", blob);
|
||||||
|
// var d;
|
||||||
|
// d = $.ajaxSettings.xhr();
|
||||||
|
// d.withCredentials = i;var d = {};
|
||||||
|
|
||||||
|
// 先显示loading...
|
||||||
|
var editor = tinymce.EditorManager.activeEditor;
|
||||||
|
var dom = editor.dom;
|
||||||
|
var d = {};
|
||||||
|
d.id = '__mcenew';
|
||||||
|
d.src = "http://leanote.com/images/loading-24.gif";
|
||||||
|
editor.insertContent(dom.createHTML('img', d));
|
||||||
|
var imgElm = dom.get('__mcenew');
|
||||||
|
$.ajax({url: "/file/uploadImageJson", contentType:false, processData:false , data: c, type: "POST"}
|
||||||
|
).done(function(re) {
|
||||||
|
if(!re || typeof re != "object" || !re.Ok) {
|
||||||
|
// 删除
|
||||||
|
dom.remove(imgElm);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 这里, 如果图片宽度过大, 这里设置成500px
|
||||||
|
getImageSize(re.Id, function(wh) {
|
||||||
|
// life 4/25
|
||||||
|
if(wh && wh.width) {
|
||||||
|
if(wh.width > 600) {
|
||||||
|
wh.width = 600;
|
||||||
|
}
|
||||||
|
d.width = wh.width;
|
||||||
|
dom.setAttrib(imgElm, 'width', d.width);
|
||||||
|
}
|
||||||
|
dom.setAttrib(imgElm, 'src', re.Id);
|
||||||
|
});
|
||||||
|
dom.setAttrib(imgElm, 'id', null);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
reader.readAsDataURL(blob);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
editor.on('paste', function(e) {
|
editor.on('paste', function(e) {
|
||||||
var clipboardContent = getClipboardContent(e);
|
var clipboardContent = getClipboardContent(e);
|
||||||
@ -477,6 +564,12 @@ define("tinymce/pasteplugin/Clipboard", [
|
|||||||
}
|
}
|
||||||
}, 0);
|
}, 0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//-----------
|
||||||
|
// paste image
|
||||||
|
try {
|
||||||
|
pasteImage(e);
|
||||||
|
} catch(e) {};
|
||||||
|
|
||||||
self.pasteHtml = pasteHtml;
|
self.pasteHtml = pasteHtml;
|
||||||
self.pasteText = pasteText;
|
self.pasteText = pasteText;
|
||||||
|
2
public/tinymce/plugins/paste/plugin.min.js
vendored
2
public/tinymce/plugins/paste/plugin.min.js
vendored
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user