DjangoUeditor 是一个相当赞的django 富文本编辑器,你可以在

https://github.com/zhangfisher/DjangoUeditor

查看相关信息。

我一直想着把DjangoUeditor 的图片和文件存储修改为七牛云存储,但又觉得自己js水平太菜,所以就一直拖延到现在,

其实我根本没改js。

好了,下面不废话,开始。

一、文件上传到七牛

在修改 DjangoUeditor 存储到七牛之前,我第一步要尝试的,就是本地文件上传到七牛。

这一步需要七牛的sdk

https://github.com/qiniu/python-sdk/releases

你可以用

pip install qiniu

安装。

 >>> access_key = 'your ak '
>>> secret_key = 'your sk'
>>> bucket_name = 'your bucket name' >>> from qiniu import Auth,put_file
>>> q = Auth(access_key, secret_key)
>>> PostFile = 'images/Koala_20141220231309_308.jpg' #PostFile 为上传后所代表的文件及路径 >>> token = q.upload_token(bucket_name, PostFile)
>>> FilePath = 'C:\\Users\\r3call\\Pictures\\Zhuoku001.jpg' # FilePath 为本地文件路径
>>> ret, info = put_file(token, PostFile, FilePath)
>>> ret
{u'hash': u'Fnpm2Sxt4_oiXtVdG8bONBsnIUAD', u'key': u'images/Koala_20141220231309_308.jpg'}

一旦上传成功, ret这个字典就会存在名为key的key,我们检测这个key就可以判断是否上传成功。

二、DjangoUeditor 上传文件到七牛

既然第一步已经成功了,我们就有希望上传文件到七牛,我首先找到了DjangoUeditor 的处理文件上传的函数。

这里说说我查找的步骤:

1.找到urls.py

url(r'^controller/$',get_ueditor_controller)

2、这样我知道函数叫做get_ueditor_controller,那么我到views.py中查找

然后我找到了一个函数叫做 UploadFile ,这个函数对文件上传进行了 检测和存储

其中

state=save_upload_file(file,os.path.join(OutputPath,OutputFile))

是真正处理文件存储的函数,我们来看看代码

 #保存上传的文件
def save_upload_file(PostFile,FilePath):
try:
f = open(FilePath, 'wb')
for chunk in PostFile.chunks():
f.write(chunk)
except Exception,E:
f.close()
return u"写入文件错误:"+ E.message
f.close()
return u"SUCCESS"

我要把文件上传到七牛,就需要仿照这个函数对文件进行处理。

于是我编写了一个函数如下:

 #保存上传文件到七牛
def save_upload_file_to_qiniu(upload_file,key):
access_key = 'your ak'
secret_key = 'your sk'
bucket_name = 'your bucket name'
try:
from qiniu import Auth,put_file,put_data
q = Auth(access_key, secret_key)
token = q.upload_token(bucket_name, key)
# ret, info = put_file(token, key, upload_file)
ret, info = put_data(token, key, upload_file)
if ret.get('key',None) == None:
raise Exception('upload error')
else:
return u"SUCCESS"
except Exception, e:
print(str(e))
return str(e)

这个函数写好之后,我要在哪里调用呢?

state=save_upload_file(file,os.path.join(OutputPath,OutputFile))

我把这里修改为

state= save_upload_file_to_qiniu(file,OutputPathFormat)

其中file是上传过来的图片,

OutputPathFormat  是生成图片的文件路径,类似于 images/Penguins_20141221001519_634.jpg

文件上传之后,调用save_upload_file_to_qiniu 对文件进行存储,如果成功,就会返回 SUCCESS,我们把结果返回。

原始返回信息如下

     return_info = {
'url': urllib.basejoin(USettings.gSettings.MEDIA_URL , OutputPathFormat) , # 保存后的文件名称
'original': upload_file_name, #原始文件名
'type': upload_original_ext,
'state': state, #上传状态,成功时返回SUCCESS,其他任何值将原样返回至图片上传框中
'size': upload_file_size
}

在返回之前,我们还需要定义一个变量

QINIU_BUCKET_DOMAIN = 'http://hello.qiniudn.com/'

这样,QINIU_BUCKET_DOMAIN  和 OutputPathFormat 连接起来,就是一个完整的文件 URL 地址,类似于

http://hello.qiniudn.com/images/Penguins_20141221001519_634.jpg

我们只需要返回这个URL 给前端即可

     #返回数据
QINIU_BUCKET_DOMAIN = 'http://hello.qiniudn.com/'
return_info = {
# 'url': urllib.basejoin(USettings.gSettings.MEDIA_URL , OutputPathFormat) , # 保存后的文件名称
'url': urllib.basejoin(QINIU_BUCKET_DOMAIN , OutputPathFormat) , # 保存后的文件名称
'original': upload_file_name, #原始文件名
'type': upload_original_ext,
'state': state, #上传状态,成功时返回SUCCESS,其他任何值将原样返回至图片上传框中
'size': upload_file_size
}

到此,我们把 DjangoUeditor 的存储改为七牛基本就结束了,如果需要管理文件,或者将AK 和SK设置到配置文件中,你可能还有些活要做。

注:涂鸦功能并没有使用同样的文件存储函数,如果需要,请单独处理。

附:修改后的views.py 替换 DjangoUeditor 下的views.py 即可,需要自己填写ak,sk,QINIU_BUCKET_DOMAIN

使用前需安装 qiniu sdk

DjangoUeditor 使用七牛云存储的更多相关文章

  1. Go语言实战 - 网站性能优化第一弹“七牛云存储”

    由于用户纷纷反应山坡网的打开速度比较慢,所以两天前我们决定把服务器从linode迁移到阿里云. 整个迁移过程非常平滑,基本上一个小时就完成了.而且阿里云的配套设施提供的也很不错,运行状态监控什么的都有 ...

  2. JavaWeb结合七牛云存储搭建个人相册服务

    JavaWeb结合七牛云存储搭建个人相册服务 一.引言1. 课程概述 相信很多人都知道网站一般会有很多图片,对于小型网站来说,图片放在网站服务器上不算什么,但当图片数量很大时,会造成服务器很臃肿,相应 ...

  3. 《介绍一款开源的类Excel电子表格软件》续:七牛云存储实战(C#)

    两个月前的发布的博客<介绍一款开源的类Excel电子表格软件>引起了热议:在博客园有近2000个View.超过20个评论. 同时有热心读者电话咨询如何能够在SpreadDesing中实现存 ...

  4. 为七牛云存储开发的PHP PEAR 包:Services_Qiniu

    七牛云存储Qiniu Resource (Cloud) Storage:用于存储图片.apk等静态资源. 优点: 1.使用七牛带宽和CDN,速度快,不占用开发者服务器. 2.支持图片任意格式.任意分辨 ...

  5. 如何在WordPress中使用七牛云存储

    序:七牛云存储可以方便的将网站的图片等数据镜像到七牛云存储的空间,直接从云端将数据返回给用户.这样可以大大节省网站的空间,提升网站的访问速度. 真正显示一键实现WordPress博客静态文件CDN加速 ...

  6. CodeIgniter - 集成七牛云存储

    最近有一个项目需要集成七牛云存储的图片存储和调用功能,程序是基于CodeIgniter2.1.3的PHP框架.刚拿到手完全无从下手的感觉,因为像框架这种东西,想从官方的PHPSDK集成进去,需要改动很 ...

  7. PHP使用七牛云存储之图片的上传、下载、303重定向教程,CI框架实例

    网上关于七牛云存储的教程除了官网上的API文档,其他的资料太少了.研究了下API之后,现在已经能实现图片的上传和下载及上传之后的重定向. http://blog.csdn.net/cqcre/arti ...

  8. ueditor上传图片到七牛云存储(form api,java)

    转:http://my.oschina.net/duoduo3369/blog/174655 ueditor上传图片到七牛云存储 ueditor结合七牛传图片 七牛的试炼 开发前的准备与注意事项说明 ...

  9. 七牛云存储Python SDK使用教程 - 上传策略详解

    文 七牛云存储Python SDK使用教程 - 上传策略详解 七牛云存储 python-sdk 七牛云存储教程 jemygraw 2015年01月04日发布 推荐 1 推荐 收藏 2 收藏,2.7k  ...

随机推荐

  1. 【Oracle 】tablespace 表空间创建和管理

    1.表空间的概述 1. 表空间是数据库的逻辑组成部分. 2. 从物理上讲,数据库数据存放在数据文件中: 3. 从逻辑上讲,数据库是存放在表空间中,表空间由一个或者多个数据文件组成. 2.oracle的 ...

  2. Linux安装ElasticSearch与MongoDB分布式集群环境下数据同步

    ElasticSearch有一个叫做river的插件式模块,可以将外部数据源中的数据导入elasticsearch并在上面建立索引.River在集群上是单例模式的,它被自动分配到一个节点上,当这个节点 ...

  3. MySQL (1366, "Incorrect string value: '\\xF0\\x9F\\x8E\\xAC\\xE5\\x89...' for column 'description' at row 1")

    (1366, "Incorrect string value: '\\xF0\\x9F\\x8E\\xAC\\xE5\\x89...' for column 'description' at ...

  4. 修改eclipse.ini文件指定jdk

    在eclipse.ini文件顶部插入 -vmE:/kfgj/Java/jdk1.7.0_21/bin/javaw.exe

  5. windows系统安装ubuntu双系统

    近期由于要学习python开发,经常需要用到linux环境.但是一般的编辑和办公在windows环境下有非常的舒服,所以就想装一个双系统.经过几经周折,终于在我的系统上装成功了,在这分享一些安装过程. ...

  6. Koa 框架 的错误处理

    默认情况下Koa会将所有错误信息输出到 stderr,除非 NODE_ENV 是 "test".为了实现自定义错误处理逻辑(比如 centralized logging),您可以添 ...

  7. 电子证据 利用Kali进行wifi钓鱼实战详细教程

    电子证据 利用Kali进行wifi钓鱼实战详细教程 一. Kali系统安装和必要软件安装: 1.Kali最新版可以来我这儿拿外置驱动和光盘装,目测用U盘装最新版有些问题,比较麻烦. 2.Kali更新源 ...

  8. express应用中常用中间件介绍

    var strftime = require('strftime'); 时间格式化中间件,功能和moment.js差不多 var methodOverride = require('method-ov ...

  9. FFmpeg(12)-使用NDK通过GLSurfaceView完成视频的播放

    一.包含头文件和库文件 这里采用的是NDK中的ANativeWindow来完成视频的播放,因为需要添加相关的库和头文件. CMakeLists target_link_libraries( # Spe ...

  10. django_simple_captcha使用笔记

    一.先来官方文档的步骤: Install django-simple-captcha via pip: pip install  django-simple-captcha Add captcha t ...