Python的Django中将文件上传至七牛云存储的代码分享

 更新时间:2016年06月03日 18:33:17   作者:theqwang   我要评论
七牛云存储可以帮助服务器转存图片等数据,类似于Dropbox等存储服务,这里就带给大家Python的Django中将文件上传至七牛云存储的代码分享,需要的朋友可以参考下

最近在写的一个django小项目需要实现用户上传图片的功能,使用到了七牛云存储,特此记录下来。这里我使用的七牛python SDK 版本是7.0.3,函数使用上可能会与旧版有些不同。

原本文件上传需要先把文件上传到自己的业务服务器,再从业务服务器上传到云存储。现在七牛的表单上传可以直接把文件上传到七牛,不再需要业务服务器的中转,节省了流量成本,降低了业务服务器的压力。而且通过设置,还可以在文件上传完成后让客户端自动重定向到一个上传成功的结果页面。这里我就是使用了七牛的表单上传。

表单上传

用户上传图片的HTML表单代码如下。其中key用来指定图片保存在七牛中的文件名,token是上传凭证,即用来验证合法性和设置返回信息的。

upload.html

<form method="POST" action="http://upload.qiniu.com/" enctype="multipart/form-data">
<input name="key" type="hidden" value="">
<input name="token" type="hidden" value="">
<input name="file" type="file">
<input type="submit">
</form>

跳转到上面HTML页面的视图函数中的关键代码如下。其中upload_token函数用于生成表单里的token字段,upload_token函数中的7200代表上传凭证的有效期,returnUrl表示上传成功后的重定向地址,returnBody表示重定向时七牛返回的信息,它是一个base64编码后的json数据,需要解码获取json数据,当上传出错时错误信息直接在url中以明文的形式出现,并不会在返回的json数据里。通过设置mimeLimit还可以限制上传文件的类型。

views.py

import qiniu
import uuid
ACCESS_KEY = '七牛分配的公钥'
SECRET_KEY = '七牛分配的私钥'
BUCKET_NAME = '保存文件的仓库名'
key = str(uuid.uuid1()).replace('-', '') # 这里使用uuid作为保存在七牛里文件的名字。并去掉了uuid中的“-”
q = qiniu.Auth(ACCESS_KEY, SECRET_KEY)
token = q.upload_token(BUCKET_NAME, key, 7200, {'returnUrl':'http://127.0.0.1:8000/photos/uploadprocessor', 'returnBody': '{"name": $(fname), "key": $(key)}', 'mimeLimit':'image/jpeg;image/png'})
return render_to_response('photos/upload.html', {'token': token, 'key': key}, context_instance=RequestContext(request))

相关文章

  • python利用smtplib实现QQ邮箱发送邮件

    python利用smtplib实现QQ邮箱发送邮件

    这篇文章主要为大家详细介绍了python利用smtplib实现QQ邮箱发送邮件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • python中类变量与成员变量的使用注意点总结

    python中类变量与成员变量的使用注意点总结

    python 的类中主要会使用的两种变量:类变量与成员变量。类变量是类所有实例化对象共有的,而成员变量是每个实例化对象自身特有的。下面这篇文章主要给大家介绍了在python中类变量与成员变量的一些使用注意点,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-04-04
  • Linux中安装Python的交互式解释器IPython的教程

    Linux中安装Python的交互式解释器IPython的教程

    IPython是一种基于Python的Shell,由于有了Python编程语言的支撑,而比一般的Shell更加强大.下面就来看一下Linux中安装Python的交互式解释器IPython的教程
    2016-06-06
  • Python中用format函数格式化字符串的用法

    Python中用format函数格式化字符串的用法

    这篇文章主要介绍了Python中用format函数格式化字符串的用法,格式化字符串是Python学习当中的基础知识,本文主要针对Python2.7.x版本,需要的朋友可以参考下
    2015-04-04
  • 关于pip的安装,更新,卸载模块以及使用方法(详解)

    关于pip的安装,更新,卸载模块以及使用方法(详解)

    下面小编就为大家带来一篇关于pip的安装,更新,卸载模块以及使用方法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Python安装使用命令行交互模块pexpect的基础教程

    Python安装使用命令行交互模块pexpect的基础教程

    Pexpect是一个纯Python模块,可以用来和ssh、ftp、passwd、telnet等命令行命令进行交互使用,在Linux系统下尤其好用,下面我们就来具体来看一下Python安装使用命令行交互模块pexpect的基础教程:
    2016-05-05
  • Python中将变量按行写入txt文本中的方法

    Python中将变量按行写入txt文本中的方法

    下面小编就为大家分享一篇Python中将变量按行写入txt文本中的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python中的defaultdict模块和namedtuple模块的简单入门指南

    Python中的defaultdict模块和namedtuple模块的简单入门指南

    这篇文章主要介绍了Python中的defaultdict模块和namedtuple模块的简单入门指南,efaultdict继承自dict、namedtuple继承自tuple,是Python中内置的数据类型,需要的朋友可以参考下
    2015-04-04
  • python发送邮件实例分享

    python发送邮件实例分享

    这篇文章主要为大家详细介绍了python发送邮件实例分享,教大家如何实现邮件发送功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • 安装2019Pycharm最新版本的教程详解

    安装2019Pycharm最新版本的教程详解

    这篇文章主要介绍了安装2019Pycharm最新版本的教程详解,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10

最新评论