Editor.md解决跨域上传的问题

编辑 editormd\plugins\image-dialog\image-dialog.js

替换以下代码片段

  1. if (settings.crossDomainUpload) {
  2. action += "&callback=" + settings.uploadCallbackURL + "&dialog_id=editormd-image-dialog-" + guid;
  3. }
  4. var csrfToken = $('meta[name="csrf-token"]').attr('content');
  5. var csrfField = "";
  6. if (csrfToken) {
  7. csrfField = "<input type='hidden' name='csrf_token' value='" + csrfToken + "' />";
  8. }
  9. var dialogContent = ((settings.imageUpload) ? "<form action=\"" + action + "\" target=\"" + iframeName + "\" method=\"post\" enctype=\"multipart/form-data\" class=\"" + classPrefix + "form\">" : "<div class=\"" + classPrefix + "form\">") +
  10. ((settings.imageUpload) ? "<iframe name=\"" + iframeName + "\" id=\"" + iframeName + "\" guid=\"" + guid + "\"></iframe>" : "") +
  11. "<label>" + imageLang.url + "</label>" +
  12. "<input type=\"text\" data-url />" + (function () {
  13. return (settings.imageUpload) ? "<div class=\"" + classPrefix + "file-input\">" +
  14. "<input type=\"file\" name=\"" + classPrefix + "image-file\" accept=\"image/*\" />" +
  15. csrfField +
  16. "<input type=\"submit\" value=\"" + imageLang.uploadButton + "\" />" +
  17. "</div>" : "";
  18. })() +
  19. "<br/>" +
  20. "<label>" + imageLang.alt + "</label>" +
  21. "<input type=\"text\" value=\"" + selection + "\" data-alt />" +
  22. "<br/>" +
  23. "<label>" + imageLang.link + "</label>" +
  24. "<input type=\"text\" value=\"http://\" data-link />" +
  25. "<br/>" + csrfField +
  26. ((settings.imageUpload) ? "</form>" : "</div>");

误区分析

代码第4行,name和自己设置的mete里的name保持一致
代码第7行,(flask框架下)name必须是csrf_token

上传图片部分代码

views.py

  1. @post.route('/upload/', methods=['POST'])
  2. def upload():
  3. file = request.files.get('editormd-image-file')
  4. if not file:
  5. res = {
  6. 'success': 0,
  7. 'message': '上传失败'
  8. }
  9. else:
  10. ex = os.path.splitext(file.filename)[1]
  11. filename = datetime.now().strftime('%Y%m%d%H%M%S') + ex
  12. path_uploads = config['uploads_path']
  13. if not os.path.exists(path_uploads):
  14. os.makedirs(path_uploads)
  15. file.save(os.path.join(path_uploads, filename))
  16. res = {
  17. 'success': 1,
  18. 'message': '上传成功',
  19. 'url': url_for('post.image', name=filename)
  20. }
  21. return jsonify(res)
  22. @post.route('/image/<name>')
  23. def image(name):
  24. path_uploads = config['uploads_path']
  25. if not os.path.exists(path_uploads):
  26. os.makedirs(path_uploads)
  27. with open(os.path.join(path_uploads, name), 'rb') as f:
  28. resp = Response(f.read(), mimetype="image/jpeg")
  29. return resp

aaa.html

  1. <form>
  2. <div id="editor_md">
  3. <textarea name="body" style="display:none;">{{ form.body.data }}</textarea>
  4. </div>
  5. </form>

aaa.js

  1. <script type="text/javascript">
  2. var testEditor;
  3. $(function () {
  4. testEditor = editormd("editor_md", {
  5. width: "90%",
  6. height: 640,
  7. syncScrolling: "single",
  8. path: "{{ url_for('static',filename='editormd/lib/') }}",
  9. imageUpload: true,
  10. imageFormats: ["jpg", "jpeg", "gif", "png", "bmp", "webp"],
  11. imageUploadURL: "{{ url_for('post.upload') }}",
  12. {#crossDomainUpload:true,#}
  13. {#uploadCallbackURL:"{{ url_for('post.upload') }}",#}
  14. searchReplace: true,
  15. saveHTMLToTextarea: true,
  16. emoji: true,//emoji表情,默认关闭
  17. taskList: true,
  18. tocm: true, // Using [TOCM]
  19. tex: true,// 开启科学公式TeX语言支持,默认关闭
  20. flowChart: true,//开启流程图支持,默认关闭
  21. sequenceDiagram: true,//开启时序/序列图支持,默认关闭,
  22. dialogLockScreen: false,//设置弹出层对话框不锁屏,全局通用,默认为true
  23. dialogShowMask: false,//设置弹出层对话框显示透明遮罩层,全局通用,默认为true
  24. dialogDraggable: false,//设置弹出层对话框不可拖动,全局通用,默认为true
  25. dialogMaskOpacity: 0.4, //设置透明遮罩层的透明度,全局通用,默认值为0.1
  26. dialogMaskBgColor: "#000",//设置透明遮罩层的背景颜色,全局通用,默认为#fff
  27. codeFold: true,
  28. /**设置主题颜色*/
  29. editorTheme: "pastel-on-dark",
  30. theme: "gray",
  31. previewTheme: "dark",
  32. });
  33. });
  34. </script>

Editor.md解决跨域上传的问题的更多相关文章

  1. Ueditor1.4.3实现跨域上传到独立文件服务器,完美解决单文件和多文件上传!

    再写配置方法之前先吐槽一下网上的各种教程,TM没一个有卵用,一群傻屌不会写就别写,写了就要负责. 百度google搜了半天,全是配置什么document.domain,根域名什么的,我只想对你说: 好 ...

  2. 解决使用elementUI框架el-upload跨域上传时session丢失问题

    解决方法一: 1.使用elementUI框架el-upload跨域上传时,后端获取不到cookie,后端接口显示未登录,在添加了 with-credentials="true"后依 ...

  3. html5上传图片(一)一跨域上传

    最近开发一个上传图片的模块,传图片的接口不支持跨域上传,并且只支持单张上传,而我们的产品要求要实现多张上传.我搞了一个代理页面,先将图片传到代理页面,然后再通过代理页面传到上传图片接口.虽然这种方式经 ...

  4. 从Ueditor跨域上传,总结的一次跨域上传的爬坑经历

    项目内其中一个管理后台需要发布文章,需要一个富文本编辑器,经过一番选择后,最终选择了百度的Ueditor. 由于上传的文件是上传到另一台专门存放图片等静态资源的服务器上面的,所以就涉及到了跨域上传. ...

  5. Angular4 后台管理系统搭建(10) - 做一个通用的可跨域上传文件的组件

    写的很慢,不知不觉这是第十篇了.但是我其他事情太多,只能抽空写下.现在angular4或angular2流行的上传方式是ng2-file-upload.它的功能很强大.但是我没有配置成可以跨域上传的. ...

  6. webuploader 跨域上传demo(还没有写记录一下)

    webuploader 跨域上传demo(还没有写记录一下)

  7. js跨域上传文件 iframe

    封装好的jq插件 (function () { var iframe = '<iframe name="jqUploadIframe" style="display ...

  8. 我是如何一步步编码完成万仓网ERP系统的(七)产品库设计 3.品牌图片跨域上传

    https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...

  9. POST方式跨域上传文件

    JSONP请求有限制: 第一,不能跳出两层, 第二,不支持POST. 往往解决跨域POST请求的方案是个"古老"方法, 请求同域下的iframe. 服务器端:  需要附加头信息: ...

随机推荐

  1. Hive 报错 Failed to load class "org.slf4j.impl.StaticLoggerBinder".

    打开hive报错 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaultin ...

  2. ImportError: No module named 'chardet'

    1.使用requsets出现这个错误,ImportError: No module named 'chardet' 原因:requests依赖其他一些模块 解决:依次使用pip安装即可 pip ins ...

  3. 5、Spring Boot缓存

    1.JSR107 Java Caching定义了5个核心接口,分别是CachingProvider.CacheManager.Cache.Entry.Expiry. CachingProvider:定 ...

  4. bWAPP----HTML Injection - Reflected (POST)

    bWAPP--low--HTML Injection - Reflected (POST) 只不过是把传递方式换成post, 防护的三个级别和内容与GET相同 1 function htmli($da ...

  5. 教你用Vegas Pro制作视频的遮罩转场特效

    很多小伙伴在接触了Vegas之后,都想利用Vegas制作出各种酷炫的特效.小编也是一样. 今天,小编就和大家分享一下,小编近期学会的遮罩转场特效. 首先想要制作遮罩转场效果,需要的素材有:至少两个图片 ...

  6. guitar pro系列教程(十五):Guitar Pro播放没有声音怎么办?

    相信很多朋友在安装了guitar pro打谱后都会发现没有声音,关于这个问题相信大家都很苦恼到底是什么问题呢,今天小编就这个问题与大家好好讨论讨论,希望对大家有帮助,感兴趣的朋友可以进来一起学习哦. ...

  7. 【xmind converse excel】测试用例定制化小工具

    背景 公司使用jira, jira写测试用例,jira可以通过execl导入进jira, 生成测试用例,但是模板很不统一,如果只是再execl中修改,又觉得及其的麻烦,所以写了一个xmind 转化为定 ...

  8. Spring简介以及配置信息

      Spring框架是一种轻量级的.一站式的企业级开发解决方案 框架(framework):是一组设计思想.规范.API的精心组合,专门用来解决某一层次或领域的问题 轻量级(lightweight): ...

  9. nginx介绍及常用功能

    什么是nginx nginx跟Apache一样,是一个web服务器(网站服务器),通过HTTP协议提供各种网络服务. Apache:重量级的,不支持高并发的服务器.在Apache上运行数以万计的并发访 ...

  10. C语言讲义——链表完整代码

    #include <stdio.h> #include <stdlib.h> #include <string.h> struct Node { int _id; ...