DjangoUeditor 使用七牛云存储

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

https://github.com/zhangfisher/DjangoUeditor

查看相关信息。

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

其实我根本没改js。

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

一、文件上传到七牛

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

这一步需要七牛的sdk

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

你可以用

pip install qiniu

安装。

 1 >>> access_key = ‘your ak ‘
 2 >>> secret_key = ‘your sk‘
 3 >>> bucket_name = ‘your bucket name‘
 4
 5 >>> from qiniu import Auth,put_file
 6 >>> q = Auth(access_key, secret_key)
 7 >>> PostFile = ‘images/Koala_20141220231309_308.jpg‘
 8
 9 #PostFile  为上传后所代表的文件及路径
10
11 >>> token = q.upload_token(bucket_name, PostFile)
12 >>> FilePath = ‘C:\\Users\\r3call\\Pictures\\Zhuoku001.jpg‘
13
14 # FilePath 为本地文件路径
15 >>> ret, info = put_file(token, PostFile, FilePath)
16 >>> ret
17 {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))

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

 1 #保存上传的文件
 2 def save_upload_file(PostFile,FilePath):
 3     try:
 4         f = open(FilePath, ‘wb‘)
 5         for chunk in PostFile.chunks():
 6             f.write(chunk)
 7     except Exception,E:
 8         f.close()
 9         return u"写入文件错误:"+ E.message
10     f.close()
11     return u"SUCCESS"

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

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

 1 #保存上传文件到七牛
 2 def save_upload_file_to_qiniu(upload_file,key):
 3     access_key = ‘your ak‘
 4     secret_key = ‘your sk‘
 5     bucket_name = ‘your bucket name‘
 6     try:
 7         from qiniu import Auth,put_file,put_data
 8         q = Auth(access_key, secret_key)
 9         token = q.upload_token(bucket_name, key)
10         # ret, info = put_file(token, key, upload_file)
11         ret, info = put_data(token, key, upload_file)
12         if ret.get(‘key‘,None) == None:
13             raise Exception(‘upload error‘)
14         else:
15             return u"SUCCESS"
16     except Exception, e:
17         print(str(e))
18         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,我们把结果返回。

原始返回信息如下

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

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

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

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

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

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

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

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

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

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

使用前需安装 qiniu sdk

时间: 2024-11-08 21:59:21

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

用ueditor上传图片、文件等到七牛云存储

ueditor上传文件,是用数据流的形式上传的. 而七牛云存储官方文档中,只提供了文件路径上传的方式. 但是,仅仅是在官方文档中写了这一种方式. 事实上,利用VS的对象管理器,打开Qiniu的dll,我们可以看到以下东西: 其实Qiniu提供的SDK中,是可以利用文件流上传文件的. 所以,根据官方文档提供的案例,我们可以将上传改写成下面的样子: /// <summary> /// 上传文件 /// </summary> /// <param name="key&qu

我为什么选择七牛云存储

在写这篇文章之前先给大家分享一个小福利:2017最新七牛云存储九折优惠券:61d1fd4d 接下来给大家谈一下我用七牛云存储的原因,从七牛一开始的时候我就开始用了,刚开始的时候七牛好像只是做静态存储,那时候我把自己的网站放在七牛上,当然只是一些静态的页面,但是对于一个初中生来说,能做出一个能访问的网站已经很高兴了,当然,那个网站是我自己用记事本一个一个打出来的代码.当时满满的自豪感. 经过了好几年,七牛已经迅速发展成国内数一数二的云存储服务商了.目前的七牛不知在云存储方面位居国内前列,在cdn加

七牛云存储优惠码及使用方法8折

现如今的互联网技术圈,随着存储技术的发展,越来越多的网站为了追求响应速度以及减轻服务器与带宽的负载压力,开始使用云存储技术,大部分网站的需求是存储静态文件或是CDN镜像加速,而这些使用者中有一大部分是使用的七牛云存储,目前七牛针对标准用户免费提供存储空间10GB,免费每月下载流量10GB,免费每月PUT/DELETE 10万次请求,免费每月GET 100万次请求. 如果你的流量比较大或者需要绑定自己的顶级域名(现在七牛绑定自己的域名需要用户充值额度不低于10元)的话,这里还有一个9折优惠码:8c

使用七牛云存储解决ios7.1的app部署问题

使用七牛云存储解决ios7.1的app部署问题 一.问题描述 开发完ios版本的app.需要将.ipa文件和.plist文件打包上传,供用户下载,在线安装.用户安装过程简单描述如下: 首先通过手机浏览器safari或者扫描二维码获取到下载.plist的地址.然后浏览器会自动跳转到这个地址,下载.读取.plist.(用户跳转的地址是.plist的下载地址.)这个过程,显然使用http协议来下载.plist文件.最后,iphone通过读取.plist文件中配置的.ipa下载地址,来安装.ipa文件,

Kindeditor上传图片到七牛云存储插件(PHP版)

由于工作需要,要使用第三方存储作为图床,发现七牛云挺不错,又可以免费使用10G的空间,决定先试试. 项目中使用的是Kindeditor作为网页编辑器的,七牛云的插件里没有现成的Kindeditor的插件,开始是想看着官方提供的手册,自己开发下,结果不知道是我太笨还是手册太高深,结果愣是没看懂,后来迫于工作进度,差点决定要放弃Kindeditor使用Ueditor,毕竟有现成的插件可用,不过迫于对Kindeditor的热衷,最后还是坚持下来了,尽管没找到Kindeditor上传到七牛云的太多资料,

第一个go的web程序;调用七牛云存储的音频api问题解决;条件搜寻文件里的内容

package main import ( "html/template" "io" "io/ioutil" "log" "net/http" "os" "path" "runtime/debug" ) const ( ListDir      = 0x0001 UPLOAD_DIR   = "./uploads" TEMPLA

【Uploadify】远程上传图片到【七牛云存储】

1.下载Uploadify版本3.2.1 2.下载七牛SDK 解压后将 qiniu 文件夹copy到uploadify文件夹下 3.修改uploadify.php文件 <?php $verifyToken = md5('unique_salt' . $_POST['timestamp']); if (!empty($_FILES) && $_POST['token'] == $verifyToken) { $tempFile = $_FILES['Filedata']['tmp_na

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

转:http://my.oschina.net/duoduo3369/blog/174655 ueditor上传图片到七牛云存储 ueditor结合七牛传图片 七牛的试炼 开发前的准备与注意事项说明 Let's rock 与ueditor结合前的准备工作 首先从表单开始 生成token 建立图片空间 生成token 上传流程 集成ueditor 将ueditor中的图片模块的在线管理功能和七牛结合 ueditor上传图片到七牛云存储 重要说明,本人已不做java多年,请不要加qq再问我java的

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

序:七牛云存储可以方便的将网站的图片等数据镜像到七牛云存储的空间,直接从云端将数据返回给用户.这样可以大大节省网站的空间,提升网站的访问速度. 真正显示一键实现WordPress博客静态文件CDN加速.下面主要介绍一下WordPress中七牛云存储插件的使用. 一.申请七牛云存储的账号 首先需要申请七牛云存储的账号,申请好后,点击创建空间,选择空间类型为公开空间,提交 二.配置空间 配置空间,点击一键加速网站. 镜像源填写自己网站域名.确认加速. 这里的robots.txt配置文件内容为: #