七牛云存储
介绍:
七牛云存储是一个集图片、视频对象存储为一体的网站。并且他上面集成了cdn加速服务,图片处理(加水印,图片裁剪)等功能,对于一些想要快速开发产品,不想花大量时间来构建自己资源服务器的中小型公司而言,无疑是最好的选择。
准备工作:
- 到七牛官网:
https://www.qiniu.com/
。创建账号。然后到个人面板->秘钥管理处获取access_key
和secret_key
。 - 创建空间,可以选择华东区,华南区等。
使用:
后端:
1. 下载Python SDK:
通过命令pip install qiniu
即可下载七牛的SDK
。
2. 创建一个获取token
的url
:
# views.py
import qiniu
@require_GET
def qntoken(request):
access_key = '你的access_key'
secret_key = '你的secret_key'
q = qiniu.Auth(access_key, secret_key)
bucket = 'xtspace'
token = q.upload_token(bucket)
return restful.result(kwargs={"uptoken":token})
然后在urls.py
中做一个url
与视图函数的映射。示例代码如下:
from django.urls import path
urlpatterns = [
path('qntoken/',views.qntoken,name='qntoken')
]
前端:
在模板中引入最新版(2.4.0)的
JavaScript SDK
:<script src="https://unpkg.com/qiniu-js@2.4.0/dist/qiniu.min.js"></script>
然后监听一个
type=file
类型的按钮的change
事件,一旦选择了文件,那么就会执行change
事件,在change
事件的处理函数中,我们就可以获取到当前选中的文件。然后通过七牛的SDK
发送给服务器。示例代码如下:function News() { var self = this; self.progressGroup = $("#progress-group"); self.progressBar = $(".progress-bar"); } News.prototype.listenQiniuUploadFileEvent = function () { var self = this; var thumbnailBtn = $('#thumbnail-btn'); thumbnailBtn.change(function (event) { var file = this.files[0]; xfzajax.get({ 'url': '/cms/qntoken/', 'success': function (result) { var token = result['uptoken']; var key = (new Date()).getTime() + '.' + file.name.split('.')[1]; var putExtra = { fname: key, params: {}, mimeType: ['image/png','video/x-ms-wmv','image/jpeg'] }; var config = { useCdnDomain: true, retryCount: 6, region: qiniu.region.z2 }; var observable = qiniu.upload(file, key, token, putExtra,config); observable.subscribe({ "next":self.updateUploadProgress, "error":self.uploadErrorEvent, "complete": self.complateUploadEvent }); self.progressGroup.show(); } }); }); }; News.prototype.updateUploadProgress = function (response) { var self = this; var total = response.total; var percent = total.percent; var percentText = percent.toFixed(0) + '%'; var progressBar = $(".progress-bar"); progressBar.css({"width":percentText}); progressBar.text(percentText); }; News.prototype.uploadErrorEvent = function (error) { window.messageBox.showError(error.message); }; News.prototype.complateUploadEvent = function (response) { var self = this; var filename = response['key']; var domain = "http://og209xb9x.bkt.clouddn.com/"; var thumbnailUrl = domain + filename; var thumbnailInput = $("#thumbnail-form"); thumbnailInput.val(thumbnailUrl); var progressGroup = $("#progress-group"); progressGroup.hide(); };
相关链接:
- 七牛官网:
https://www.qiniu.com/
。 Python SDK
地址:https://developer.qiniu.com/kodo/sdk/1242/python
。JavaScript SDK
地址:https://developer.qiniu.com/kodo/sdk/1283/javascript
。