在作应用时,考虑到应用的会产生不少图片,为了省劲,就选择了七牛云存储,使用云存储的好处你们都是有感的,但仍是有一点点担忧,若是使用的第三方云存储挂掉了,(=@__@=),这是后话html
前台使用的上传组件选择了webuploader
,我设计的业务流程以下前端
前端图片上传到七牛,七牛返回图片的名称,而后前端把返回的数据填充到指定的表单中,而后再次提交到后台,保存到数据库中,路子大体是这样的python
后台选择了 django-1.6.7
, 至于为何不用更高级的版本,或许是 south
用的过久了,太爽了,因此七牛的 SDK,选用了 python
版本的 SDK
web
下面这段偷懒 粘贴过来的数据库
在七牛云存储中,整个上传流程大致分为这样几步:django
上传凭证
给客户端(终端用户)上传凭证
上传文件到七牛这里的上传凭证即为 Token
, 在个人这个例子中,直接省去了第三步和第四步,若是须要走第三步和第四步,能够查看相应的文档后端
from qiniu import Auth class AddView(TemplateView): template_name = 'xx.html' def get_context_data(self, **kwargs): q = Auth(access_key, secret_key) token = q.upload_token('xxx') context = super(AddView, self).get_context_data(**kwargs) context['token'] = token return context
这样就把 Token
传入到视图中,若是想图省事,能够把这段生成业务封装成一个中间件
七牛云存储
WebUploader.create({ swf: 'xxxx/libs/webuploader/Uploader.swf', server: 'http://up.qiniu.com/', pick: '#xxxxx', resize: false, fileNumLimit: xxx, auto: true, formData: { token: {token 传入后台生成的Token} } });
上传成功以后,七牛返回服务器
Object { hash: "FtsE1LaEX5dqGOoY2l1sqGX62WMV", key: "FtsE1LaEX5dqGOoY2l1sqGX62WMV", _raw: '{ "hash":"FtsE1LaEX5dqGOoY2l1sqGX62WMV", "key":"FtsE1LaEX5dqGOoY2l1sqGX62WMV" } }
如此设计
你在七牛创建的指定空间的默认地址 + 返回的 hash 值,即为你上传到七牛的路径
举例:
这只是一个最简单的例子,里面有不少的玩法,前端和后端都是,看你怎么玩了