当前位置:Gxlcms > html代码 > Drag事件编辑器实现拖拽上传图片效果

Drag事件编辑器实现拖拽上传图片效果

时间:2021-07-01 10:21:17 帮助过:42人阅读

这次给大家带来Drag事件编辑器实现拖拽上传图片效果,Drag事件编辑器实现拖拽上传图片效果的注意事项有哪些,下面就是实战案例,一起来看一下。

本站的编辑器图片上传便是使用的这部分

Seajs 定义Tools模块

  1. /**
  2. * Created by zhaojunlike on 8/22/2017.
  3. */
  4. define(function (require, exports, module) {
  5. /**
  6. * 截图粘贴
  7. * @param selector
  8. * @param callback
  9. */
  10. exports.paste = function (selector, callback) {
  11. document.querySelector(selector).addEventListener("paste", function (ev) {
  12. var data = ev.clipboardData;
  13. var items = (event.clipboardData || event.originalEvent.clipboardData).items;
  14. for (var i in items) {
  15. var item = items[i];
  16. //如果是图片
  17. if (item.kind === 'file' && item.type.indexOf('image') > -1) {
  18. var blob = item.getAsFile();
  19. var reader = new FileReader();
  20. //reader读取完成后,xhr上传
  21. reader.onload = function (event) {
  22. var base64 = event.target.result;
  23. //ajax上传图片
  24. //返回一个base64数据
  25. var img = {type: item.type, kind: item.kind};
  26. if (typeof callback === "function") {
  27. callback(event.target.result, img, event);
  28. }
  29. }; // data url!
  30. reader.readAsDataURL(blob);//reader
  31. }
  32. }
  33. });
  34. };
  35. /**
  36. * 拖拽上传
  37. * @param selector
  38. * @param callback
  39. */
  40. exports.drag = function (selector, callback) {
  41. var element = document.querySelector(selector);
  42. element.addEventListener("drop", function (e) {
  43. e.preventDefault();
  44. var files = e.dataTransfer.files;
  45. for (var i = 0; i < files.length; i++) {
  46. //回调文件
  47. //alert("Drop " + file[i].name.toString());
  48. var reader = new FileReader();
  49. var item = files[i];
  50. reader.onload = function (event) {
  51. var base64 = event.target.result;
  52. //返回一个base64数据
  53. var img = {type: item.type, name: item.name};
  54. if (typeof callback === "function") {
  55. callback(event.target.result, img, event);
  56. }
  57. };
  58. reader.readAsDataURL(files[i]);//reader
  59. }
  60. return false;
  61. });
  62. element.addEventListener("dragenter", function (e) {
  63. e.stopPropagation();
  64. e.preventDefault();
  65. });
  66. element.addEventListener("dragover", function (e) {
  67. e.dataTransfer.dropEffect = "copy";
  68. e.stopPropagation();
  69. e.preventDefault();
  70. });
  71. document.body.addEventListener("dragover", function (e) {
  72. e.stopPropagation();
  73. e.preventDefault();
  74. return false;
  75. });
  76. }
  77. /**
  78. * 解析粘贴过来的内容,看是否有不是本站的图片,解析出来上传到本站
  79. */
  80. exports.parseImg = function () {
  81. }
  82. });

使用方法:

  1. //粘贴上传图片
  2. Edtools.paste("#post_content", function (base64, image, event) {
  3. $.post("{:url('api/uploader/upEditorImg')}",{base:base64}, function (ret) {
  4. layer.msg(ret.msg);
  5. if (ret.code === 1) {
  6. //新一行的图片显示
  7. editor.insertValue("\n![" + ret.data.title + "](" + ret.data.path + ")");
  8. }
  9. });
  10. });
  11. //拖拽上传图片
  12. Edtools.drag("#post_content", function (base64, image, event) {
  13. $.post("{:url('api/uploader/upEditorImg')}",{base:base64}, function (ret) {
  14. layer.msg(ret.msg);
  15. if (ret.code === 1) {
  16. //新一行的图片显示
  17. editor.insertValue("\n![" + ret.data.title + "](" + ret.data.path + ")");
  18. }
  19. });
  20. });

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

H5的LocalStorage本地存储使用详解

自定义实现可以播放暂停、进度拖拽、音量控制及全屏的H5播放器

以上就是Drag事件编辑器实现拖拽上传图片效果的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行