neditor.service.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. /**
  2. * 自定义上传接口
  3. * 由于所有Neditor请求都通过editor对象的getActionUrl方法获取上传接口,可以直接通过复写这个方法实现自定义上传接口
  4. * @param {String} action 匹配neditor.config.js中配置的xxxActionName
  5. * @returns 返回自定义的上传接口
  6. */
  7. UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
  8. UE.Editor.prototype.getActionUrl = function (action) {
  9. var baseURL = window.SITE_CONFIG.baseUrl;
  10. /* 按config中的xxxActionName返回对应的接口地址 */
  11. if (action == 'uploadimage' || action == 'uploadscrawl') {
  12. return baseURL + '/sys/oss/upload?token=' + getCookie("token");
  13. } else if (action == 'uploadvideo') {
  14. return baseURL + '/sys/oss/upload?token=' + getCookie("token");
  15. } else if (action == 'uploadfile') {
  16. return baseURL + '/sys/oss/upload?token=' + getCookie("token");
  17. } else if (action == 'imgList') {
  18. return baseURL + '/sys/oss/list?token=' + getCookie("token");
  19. }
  20. else {
  21. return this._bkGetActionUrl.call(this, action);
  22. }
  23. }
  24. getCookie = function (c_name) {
  25. if (document.cookie.length > 0) {
  26. c_start = document.cookie.indexOf(c_name + "=")
  27. if (c_start != -1) {
  28. c_start = c_start + c_name.length + 1
  29. c_end = document.cookie.indexOf(";", c_start)
  30. if (c_end == -1) c_end = document.cookie.length
  31. return unescape(document.cookie.substring(c_start, c_end))
  32. }
  33. }
  34. return ""
  35. }
  36. window.UEDITOR_CONFIG['imageLoadService'] = function (context, editor) {
  37. return {
  38. getResponseSuccess: function (res) {
  39. return res.code == 0;
  40. }
  41. }
  42. };
  43. /**
  44. * 图片上传service
  45. * @param {Object} context UploadImage对象 图片上传上下文
  46. * @param {Object} editor 编辑器对象
  47. * @returns imageUploadService 对象
  48. */
  49. window.UEDITOR_CONFIG['imageUploadService'] = function (context, editor) {
  50. return {
  51. /**
  52. * 触发fileQueued事件时执行
  53. * 当文件被加入队列以后触发,用来设置上传相关的数据 (比如: url和自定义参数)
  54. * @param {Object} file 当前选择的文件对象
  55. */
  56. setUploadData: function (file) {
  57. return file;
  58. },
  59. /**
  60. * 触发uploadBeforeSend事件时执行
  61. * 在文件上传之前触发,用来添加附带参数
  62. * @param {Object} object 当前上传对象
  63. * @param {Object} data 默认的上传参数,可以扩展此对象来控制上传参数
  64. * @param {Object} headers 可以扩展此对象来控制上传头部
  65. * @returns 上传参数对象
  66. */
  67. setFormData: function (object, data, headers) {
  68. return data;
  69. },
  70. /**
  71. * 触发startUpload事件时执行
  72. * 当开始上传流程时触发,用来设置Uploader配置项
  73. * @param {Object} uploader
  74. * @returns uploader
  75. */
  76. setUploaderOptions: function (uploader) {
  77. return uploader;
  78. },
  79. /**
  80. * 触发uploadSuccess事件时执行
  81. * 当文件上传成功时触发,可以在这里修改上传接口返回的response对象
  82. * @param {Object} res 上传接口返回的response
  83. * @returns {Boolean} 上传接口返回的response成功状态条件 (比如: res.code == 200)
  84. */
  85. getResponseSuccess: function (res) {
  86. return res.code == 0;
  87. },
  88. /* 指定上传接口返回的response中图片路径的字段,默认为 url
  89. * 如果图片路径字段不是res的属性,可以写成 对象.属性 的方式,例如:data.url
  90. * */
  91. imageSrcField: 'url'
  92. }
  93. };
  94. /**
  95. * 视频上传service
  96. * @param {Object} context UploadVideo对象 视频上传上下文
  97. * @param {Object} editor 编辑器对象
  98. * @returns videoUploadService 对象
  99. */
  100. window.UEDITOR_CONFIG['videoUploadService'] = function (context, editor) {
  101. return {
  102. /**
  103. * 触发fileQueued事件时执行
  104. * 当文件被加入队列以后触发,用来设置上传相关的数据 (比如: url和自定义参数)
  105. * @param {Object} file 当前选择的文件对象
  106. */
  107. setUploadData: function (file) {
  108. return file;
  109. },
  110. /**
  111. * 触发uploadBeforeSend事件时执行
  112. * 在文件上传之前触发,用来添加附带参数
  113. * @param {Object} object 当前上传对象
  114. * @param {Object} data 默认的上传参数,可以扩展此对象来控制上传参数
  115. * @param {Object} headers 可以扩展此对象来控制上传头部
  116. * @returns 上传参数对象
  117. */
  118. setFormData: function (object, data, headers) {
  119. return data;
  120. },
  121. /**
  122. * 触发startUpload事件时执行
  123. * 当开始上传流程时触发,用来设置Uploader配置项
  124. * @param {Object} uploader
  125. * @returns uploader
  126. */
  127. setUploaderOptions: function (uploader) {
  128. return uploader;
  129. },
  130. /**
  131. * 触发uploadSuccess事件时执行
  132. * 当文件上传成功时触发,可以在这里修改上传接口返回的response对象
  133. * @param {Object} res 上传接口返回的response
  134. * @returns {Boolean} 上传接口返回的response成功状态条件 (比如: res.code == 200)
  135. */
  136. getResponseSuccess: function (res) {
  137. return res.code == 0;
  138. },
  139. /* 指定上传接口返回的response中视频路径的字段,默认为 url
  140. * 如果视频路径字段不是res的属性,可以写成 对象.属性 的方式,例如:data.url
  141. * */
  142. videoSrcField: 'url'
  143. }
  144. };
  145. /**
  146. * 涂鸦上传service
  147. * @param {Object} context scrawlObj对象
  148. * @param {Object} editor 编辑器对象
  149. * @returns scrawlUploadService 对象
  150. */
  151. window.UEDITOR_CONFIG['scrawlUploadService'] = function (context, editor) {
  152. return scrawlUploadService = {
  153. /**
  154. * 点击涂鸦模态框确认按钮时触发
  155. * 上传涂鸦图片
  156. * @param {Object} file 涂鸦canvas生成的图片
  157. * @param {Object} base64 涂鸦canvas生成的base64
  158. * @param {Function} success 上传成功回调函数,回传上传成功的response对象
  159. * @param {Function} fail 上传失败回调函数,回传上传失败的response对象
  160. */
  161. /**
  162. * 上传成功的response对象必须为以下两个属性赋值
  163. *
  164. * 上传接口返回的response成功状态条件 {Boolean} (比如: res.code == 200)
  165. * res.responseSuccess = res.code == 200;
  166. *
  167. * 指定上传接口返回的response中涂鸦图片路径的字段,默认为 url
  168. * res.videoSrcField = 'url';
  169. */
  170. uploadScraw: function (file, base64, success, fail) {
  171. /* 模拟上传操作 */
  172. var formData = new FormData();
  173. formData.append('file', file, file.name);
  174. $.ajax({
  175. url: editor.getActionUrl(editor.getOpt('scrawlActionName')),
  176. type: 'POST',
  177. //ajax2.0可以不用设置请求头,但是jq帮我们自动设置了,这样的话需要我们自己取消掉
  178. contentType: false,
  179. //取消帮我们格式化数据,是什么就是什么
  180. processData: false,
  181. data: formData
  182. }).done(function (res) {
  183. var res = JSON.parse(res);
  184. /* 上传接口返回的response成功状态条件 (比如: res.code == 200) */
  185. res.responseSuccess = res.code == 0;
  186. /* 指定上传接口返回的response中涂鸦图片路径的字段,默认为 url
  187. * 如果涂鸦图片路径字段不是res的属性,可以写成 对象.属性 的方式,例如:data.url
  188. */
  189. res.scrawlSrcField = 'url';
  190. /* 上传成功 */
  191. success.call(context, res);
  192. }).fail(function (err) {
  193. /* 上传失败 */
  194. fail.call(context, err);
  195. });
  196. }
  197. }
  198. }
  199. /**
  200. * 附件上传service
  201. * @param {Object} context UploadFile对象 附件上传上下文
  202. * @param {Object} editor 编辑器对象
  203. * @returns fileUploadService 对象
  204. */
  205. window.UEDITOR_CONFIG['fileUploadService'] = function (context, editor) {
  206. return {
  207. /**
  208. * 触发fileQueued事件时执行
  209. * 当文件被加入队列以后触发,用来设置上传相关的数据 (比如: url和自定义参数)
  210. * @param {Object} file 当前选择的文件对象
  211. */
  212. setUploadData: function (file) {
  213. return file;
  214. },
  215. /**
  216. * 触发uploadBeforeSend事件时执行
  217. * 在文件上传之前触发,用来添加附带参数
  218. * @param {Object} object 当前上传对象
  219. * @param {Object} data 默认的上传参数,可以扩展此对象来控制上传参数
  220. * @param {Object} headers 可以扩展此对象来控制上传头部
  221. * @returns 上传参数对象
  222. */
  223. setFormData: function (object, data, headers) {
  224. return data;
  225. },
  226. /**
  227. * 触发startUpload事件时执行
  228. * 当开始上传流程时触发,用来设置Uploader配置项
  229. * @param {Object} uploader
  230. * @returns uploader
  231. */
  232. setUploaderOptions: function (uploader) {
  233. return uploader;
  234. },
  235. /**
  236. * 触发uploadSuccess事件时执行
  237. * 当文件上传成功时触发,可以在这里修改上传接口返回的response对象
  238. * @param {Object} res 上传接口返回的response
  239. * @returns {Boolean} 上传接口返回的response成功状态条件 (比如: res.code == 200)
  240. */
  241. getResponseSuccess: function (res) {
  242. return res.code == 0;
  243. },
  244. /* 指定上传接口返回的response中附件路径的字段,默认为 url
  245. * 如果附件路径字段不是res的属性,可以写成 对象.属性 的方式,例如:data.url
  246. * */
  247. fileSrcField: 'url'
  248. }
  249. };