前言

为了在Django框架下使用Xheditor上传图片,居然折腾了我一个晚上。期间也遇到种种问题,网上相关资料极少。现在把经验分享给大家。

正文

xheditor篇

1.下载http://xheditor.com/

2.将其中的xheditor-zh-cn.min.js以及xheditor_emot、xheditor_plugins和xheditor_skin三个文件夹copy到xheditor目录下。注:如果您网站中没有使用jQuery框架,也请一并上传jquery文件夹中的jquery-1.4.4.min.js

(上传文件域名字为:filedata
返回结构必需为json,并且结构如下:{"err":"","msg":"200906030521128703.gif"})

3.在相应html文件的</head>之前添加

<script src="/static/js/jquery-1.4.4.min.js" type="text/javascript"></script>
<script src="/static/xheditor/xheditor-1.1.14-zh-cn.min.js" type="text/javascript"></script>

4.在您的页面初始JS代码里加上:

<script type="text/javascript">
$(function(){
$('#txt_notes').xheditor({width:'800',height:'300',upImgUrl:"/admin/upload/",upImgExt:"jpg,jpeg,gif,png"});
})
</script>

Python&Django篇

先看下项目的结构图

1.settings.py配置

MIDDLEWARE_CLASSES中注释(否则出现403错误)
#'django.middleware.csrf.CsrfViewMiddleware', import os
MEDIA_ROOT = os.path.join(os.path.dirname(__file__),"travels").replace('\\','/')

2.urls.py 配置

url(r'^admin/upload/$','wetrip.views.upload.upload_image'),
url(r'^static/(?P<path>.*)$','django.views.static.serve',
{'document_root': "/目录/static/"}),
url(r'^pictures/(?P<path>.*)$','django.views.static.serve',
{'document_root': "/目录/travels/pictures"}),

3.上传主要代码

upload.py
#coding=utf-8
from django.http import HttpResponse
from django.utils import simplejson
import time,os
import datetime as dt
import wetrip.settings #允许上传文件类型
ALLOW_SUFFIX =['.jpg','.png','.jpeg','.gif']
#目录创建
def create_dir():
today = dt.datetime.today()
dir_name = '/pictures/%d/%d/%d' %(today.year,today.month,today.day)
if not os.path.exists(wetrip.settings.MEDIA_ROOT + dir_name):
os.makedirs(wetrip.settings.MEDIA_ROOT + dir_name)
return dir_name def upload_image(request):
dir_name = create_dir()
if 'HTTP_CONTENT_DISPOSITION' in request.META:#chrome/firefox Xheditor使用的是Html5方式上传
disposition = request.META['HTTP_CONTENT_DISPOSITION']
image_name_suffix = disposition[ disposition.rindex('.') : disposition.rindex('"') ]
data = request.body #request.raw_post_data#已过时
return write_data(data,image_name_suffix,dir_name,True)
else:#普通上传,ie
if 'filedata' in request.FILES:
image_name = request.FILES["filedata"].name
image_name_suffix = image_name[image_name.rindex('.') : ]
return write_data(request.FILES["filedata"],image_name_suffix,dir_name,False)
else:
return HttpResponse(simplejson.dumps({'err':'未选择文件','msg':''},ensure_ascii = False)) #保存图片
def write_data(data,image_name_suffix,dir_name,html5):
if image_name_suffix in ALLOW_SUFFIX:
image_name = str(int(time.time())) + image_name_suffix
try:
with open(wetrip.settings.MEDIA_ROOT + dir_name+'/'+ image_name,'wb') as destination:
if html5:
destination.write(data)#写文件流
else:
for c in data.chunks():
destination.write(c)
return HttpResponse(simplejson.dumps({'err':'','msg':dir_name+'/'+image_name},ensure_ascii = False))
except Exception,e:
return HttpResponse(simplejson.dumps({'err':e.message,'msg':''},ensure_ascii = False))
else:
return HttpResponse(simplejson.dumps({'err':'上传格式不准确!只支持jpg,png,jpeg,gif','msg':''},ensure_ascii = False))

[原创]Python/Django使用富文本编辑器XHeditor上传本地图片的更多相关文章

  1. Django使用富文本编辑器

    1.下载kindeditor 网址:http://kindeditor.net/demo.php2.解压到项目中 地址:\static\js\kindeditor-4.1.103.删除没用的文件 例如 ...

  2. 给Django后台富文本编辑器添加上传文件的功能

    使用富文本编辑器上传的文件是要放到服务器上的,所以这是一个request.既然是一个request,就需要urls.py进行转发请求views.py进行处理.views.py处理完了返回一个文件所在的 ...

  3. c# mvc使用富文本编辑器数据上传回显问题,图片,附件上传解决方案

    1.首先去官网下载编辑器:http://ueditor.baidu.com/website/download.html   我用的是asp.net  mvc开发模式所以选的是asp 2.前端页面必须引 ...

  4. Django使用富文本编辑器ckediter

    1 - 安装 pip install django-ckeditor 2 - 注册APP ckeditor 3 - 由于djang-ckeditor在ckeditor-init.js文件中使用了JQu ...

  5. Django实现的博客系统中使用富文本编辑器ckeditor

    操作系统为OS X 10.9.2,Django为1.6.5. 1.下载和安装 1.1 安装 ckeditor 下载地址 https://github.com/shaunsephton/django-c ...

  6. Django中使用富文本编辑器Uedit

    Uedit是百度一款非常好用的富文本编辑器 一.安装及基本配置 官方GitHub(有详细的安装使用教程):https://github.com/zhangfisher/DjangoUeditor 1. ...

  7. Django后台管理admin或者adminx中使用富文本编辑器

    在admin或者adminx后台中使用富文本编辑器 一.建立模型:(安装django-tinymce==2.6.0) from django.db import models from tinymce ...

  8. flask项目中使用富文本编辑器

    flask是一个用python编写的轻量级web框架,基于Werkzeug WSGI(WSGI: python的服务器网关接口)工具箱和Jinja2模板,因为它使用简单的核心,用extension增加 ...

  9. django-应用中和amdin使用富文本编辑器kindeditor

    文章描述.新闻详情和产品介绍等,都需要大量的文字描述信息或图片.视频.文字的编辑等,这个时候我们就需要介绍第三方富文本编辑器. 今天介绍的是django中绑定和应用kindeditor编辑器: 效果如 ...

随机推荐

  1. [Asp.net MVC]Asp.net MVC5系列——布局视图

    目录 系列文章 概述 布局视图 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5系列——添加视图 [Asp.net M ...

  2. Delphi7如何实现让Tedit显示文字垂直居中(上下居中)

    通过下面的组件,可以在输入文字的时候自动垂直居中 直接把下面代码保存到Unit1.pas即可------------------------------------------ unit Unit1; ...

  3. 使用fiddler的过滤条件

    使用fiddler抓包的时候经常一下子显示很多的记录,看的眼花缭乱,需要这时候需要使用过滤条件来帮助你,一般常用的有三种过滤条件: 1.域名过滤,只显示特定域名的记录: *.baidu.com表示所有 ...

  4. 【刷题】BZOJ 5312 冒险

    Description Kaiser终于成为冒险协会的一员,这次冒险协会派他去冒险,他来到一处古墓,却被大门上的守护神挡住了去路,守护神给出了一个问题, 只有答对了问题才能进入,守护神给出了一个自然数 ...

  5. 【题解】 bzoj4033: [HAOI2015]树上染色* (动态规划)

    bzoj4033,懒得复制,戳我戳我 Solution: 定义状态\(dp[i][j]\)表示\(i\)号节点为根节点的子树里面有\(j\)个黑色节点时最大的贡献值 然后我们要知道的就是子节点到根节点 ...

  6. Maven添加第三方库及部署配置

    配置其实很简单,还是修改~/.m2/settings.xml文件,具体用文件说话,其他不解释. <?xml version="1.0" encoding="UTF- ...

  7. CF1025D Recovering BST

    题意:给定序列,问能否将其构成一颗BST,使得所有gcd(x, fa[x]) > 1 解:看起来是区间DP但是普通的f[l][r]表示不了根,f[l][r][root]又是n4的会超时,怎么办? ...

  8. 第七节 认识SpringMVC中的表单标签

    所谓成熟,就是:你要习惯,任何人的忽冷忽热:也要看淡,任何人的渐行渐远: --胖先生 SpringMVC的表单标签 回顾: JSTL标签 --C标签 FMT标签 自学:JSP如何自定义标签[开源社区当 ...

  9. Windows系统安装————windows7 企业版 无法安装 NET.framework4.52-4.6版本在WIN7下解决办法

    官方安装包下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=48137 我安装了NMM后提示NET.framework版本太低 ...

  10. 流媒体服务器之————EasyDarwin开源流媒体服务器:编译、配置、部署

    源码下载地址:https://github.com/EasyDarwin/EasyDarwin/archive/v7.0.5.zip 查看 Ubuntu 的版本号 sudo lsb_release - ...