利用base64编码,直接将图片写到帖子里,没有引入jq等三方库,不怕冲突,测试谷歌91、火狐78、Safari15可用,至于用base64的原因主要是因为懒得去看上传的api。。
鉴于网友都说过暴力,提供上传七牛版
阿里懒人版(复制一下两个js到插件中心)感谢
@读书顶个鸟用 提供的上传实例代码
导入网页插件:未命名(当前用户:0,总安装次数:0)
<script src="https://hu60.org/toastui-editor/spark-md5.min.js"></script>
<script src="http://file.hu60.cn/file/hash/js/983c474dc7ba81318d0e030cfda482456052.js?attname=file-hash-js-983c474dc7ba81318d0e030cfda482456052.js"></script>

=======以下是原始 base64版本 ====
懒人版,直接引入js
导入网页插件:未命名(当前用户:0,总安装次数:0)
<script src="http://file.hu60.cn/file/hash/js/130b1799c0b90d26bf160db9db2be9b63520.js?attname=base64.js"></script>
或者复制代码
导入网页插件:未命名(当前用户:0,总安装次数:0)
<script>
document.addEventListener('paste', function (event) {
console.log(event)
var isChrome = false;
if ( event.clipboardData || event.originalEvent ) {
var clipboardData = (event.clipboardData || event.originalEvent.clipboardData);
if ( clipboardData.items ) {
var items = clipboardData.items,
len = items.length,
blob = null;
isChrome = true;
for (var i = 0; i < len; i++) {
if (items[i].type.indexOf("image") !== -1) {
blob = items[i].getAsFile();
}
}
if ( blob !== null ) {
var reader = new FileReader();
reader.onload = function (event) {
var base64_str = event.target.result
uploadImgFromPaste(base64_str, 'paste', isChrome);
}
reader.readAsDataURL(blob);
}
} else {
setTimeout(function () {
var imgList = document.querySelectorAll('#tar_box img'),
len = imgList.length,
src_str = '',
i;
for ( i = 0; i < len; i ++ ) {
if ( imgList[i].className !== 'my_img' ) {
src_str = imgList[i].src;
}
}
uploadImgFromPaste(src_str, 'paste', isChrome);
}, 1);
}
} else {
setTimeout(function () {
var imgList = document.querySelectorAll('#tar_box img'),
len = imgList.length,
src_str = '',
i;
for ( i = 0; i < len; i ++ ) {
if ( imgList[i].className !== 'my_img' ) {
src_str = imgList[i].src;
}
}
uploadImgFromPaste(src_str, 'paste', isChrome);
}, 1);
}
})
function uploadImgFromPaste (file, type, isChrome) {
var formData = new FormData();
var ele = document.getElementById("content");
ele.value = ele.value + "《图片:"+ file +",图片》";
}
</script>
视频链接
// 引入 MD5 计算组件 https://hu60.org/toastui-editor/spark-md5.min.js fileUpload(blob, (url) => alert('上传成功:' + url)); function fileUpload(blob, callback) { let blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice, file = blob, chunkSize = 2097152, // Read in chunks of 2MB chunks = Math.ceil(file.size / chunkSize), currentChunk = 0, spark = new SparkMD5.ArrayBuffer(), fileReader = new FileReader(); fileReader.onload = function (e) { spark.append(e.target.result); currentChunk++; if (currentChunk < chunks) { loadNext(); } else { console.debug('完成hash计算'); let fileMd5Hash = spark.end(); console.debug(fileMd5Hash); fetch("/q.php/api.qiniu.json", { method: 'GET' ,credentials: 'same-origin' ,headers: { 'X-Requested-With': 'XMLHttpRequest' } }) .then(response => response.json()) .then(function (qiniu) { console.debug('获取七牛云上传Token成功', qiniu); let fileExt = blob.name.split('.').pop(); let formData = new FormData(); formData.append('file', blob); formData.append('key', 'file-hash-' + fileExt + '-' + fileMd5Hash + blob.size + '.' + fileExt); formData.append('token', qiniu.uptoken); formData.append('name', blob.name); console.debug('上传文件到七牛云'); fetch('https://' + qiniu.zone.cdnUpHosts[0], { body: formData ,method: 'POST' ,credentials: 'same-origin' ,headers: { 'X-Requested-With': 'XMLHttpRequest' } }) .then(response => response.json()) .then(function (result) { console.debug('文件上传成功', result) callback('http://' + qiniu.host + '/' + result.key); }) .catch(function (error) { console.warn(error); alert('上传失败:' + error); }); }) .catch(function (error) { console.warn(error); alert('获取七牛云上传Token失败:' + error); }); } }; fileReader.onerror = function () { console.warn('oops, something went wrong.'); }; function loadNext() { var start = currentChunk * chunkSize, end = ((start + chunkSize) >= file.size) ? file.size : start + chunkSize; fileReader.readAsArrayBuffer(blobSlice.call(file, start, end)); } loadNext(); }
还是上传到七牛云比较好,不然编辑帖子时不方便
@残缘 远古浏览器就不考虑兼容性问题了