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. 【代码导读】Github 开源项目——wysihtml5 富编辑器(Bootstrap 风格)【一】

    如果你经常留迹于各大论坛.博客,肯定对它们的富编辑器稍有印象.纯 Javascript 富编辑器可以说是前台 JS 脚本的巅峰作品.一款完整的编辑器,其复杂的功能,会让你遇到各种头痛的浏览器兼容问题, ...

  2. 【Spring】SpringMVC之上传文件

    这里笔者介绍利用SpringMVC上传图片的操作. 步骤 1.  引入jar文件 不仅需要导入开发SpringMVC相关的包,还需要导入 commons-fileupload-1.2.1.jar 和  ...

  3. codesmith连接postgresql修复bug

    转:CodeSmith7代码生成器针对PostgreSQL数据库无法使用的Bug修复全过程 我自己又修改过,完整的PostgreSQLSchemaProvider.cs文件如下 using Npgsq ...

  4. Digital Color Meter 颜色值提取工具

    1.Digital Color Meter 简介 Digital Color Meter 是一款 Mac 自带的颜色值提取工具. 其它下载地址 Digital Color Meter for Mac, ...

  5. Git工程迁移方法总结(命令行) .(转载)

    原文地址:http://blog.csdn.net/hongshan50/article/details/236630433 Git工程迁移方法总结 Git工程迁移方法总结 Git最近准备迁移一下位置 ...

  6. tp数据库表大写命名的一些问题

    在使用thinkphp时,如果数据库表命名有大写,会被转换成小写加下划线(可以使用$model->_sql())来查看实际执行的sql是什么 这个问题,看了一下源代码,在 Thinkphp/Co ...

  7. 解决 p0sixspwn-v1.0.4 win版 无法定位程序输入点sqlite3_wal_checkpoint的问题

    p0sixspwn-v1.0.4 win版今天早晨发现大神( @winocm · @iH8sn0w · @SquiffyPwn) 已经发布. 下载下来运行之,发现会报错: 无法定位程序输入点sqlit ...

  8. Manning Hadoop in Practice 翻译【6.2.2】

    不是从第一章开始. 6.2.2 Map的困境 技巧 29 鉴别map阶段的数据差异问题 数据差异是非常常见的.在map阶段,数据差异主要以少量不可以分割的大文件或者大量小文件为代表. 问题 你想要确认 ...

  9. svm工具箱快速入手简易教程

    首先svm是用来做分类的,是一种有监督的分类器. 什么是有监督的呢?就是说在你给我一个数据集让我做分类之前.我已经有一些经验数据了.即要先进行学习,再进行分类. 这里就有了训练集和测试集.先用训练集来 ...

  10. Linux 系统结构详解【转】

    Linux系统一般有4个主要部分: 内核.shell.文件系统和应用程序.内核.shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序.管理文件并使用系统.部分层次结构如图1-1所 ...