Django学习之第三方储存服务器的使用
2017-08-23 14:48
211 查看
最近,越来越多的公司采用第三方储存来作为视频,图片的储存工具。
国内的像七牛,阿里云的OSS,国外的像亚马逊的S3,微软的azure都是非常有名的第三方储存。
下面以阿里的OSS为例,来介绍第三储存的使用:
1.安装python对OSS操作的模块
pip install oss2
2.再安装python对OSS储存的模块
pip install django-aliyun-oss2-storage
3.设置settings.py文件
# 使用OSS存储文件 DEFAULT_FILE_STORAGE = 'aliyun_oss2_storage.backends.AliyunMediaStorage' # 配置OSS信息 ACCESS_KEY_ID = "xxxxxxxxxxx" ACCESS_KEY_SECRET = "xxxxxxxxxxx" END_POINT = "oss-cn-shanghai.aliyuncs.com" # OSS存储节点 BUCKET_NAME = "xxx" BUCKET_ACL_TYPE = "public-read" # private, public-read, public-read-write
MEDIA_ROOT是媒体文件的上传位置根目录,由于设置了BUCKET_NAME,一般在这个bucket中。所以设置为空字符串。
文件自然上传到Django模版的FileField字段设置的upload_to位置。
MEDIA_URL是获取媒体文件的链接前缀,可根据自己的oss文件链接位置添加。
由于上传的文件需要开放被用户下载,BUCKET_ACL_TYPE设置为公共的。若你的静态文件也需要上传到OSS中,设置如下:
# 设置上传的静态文件 STATICFILES_STORAGE = 'aliyun_oss2_storage.backends.AliyunStaticStorage'
解决文件名称乱码问题:
打开该包的源码文件backends.py,找到AliyunBaseStorage类的_save方法。修改如下:
def _save(self, name, content): # 获得文件名 filename = str(content) # 设置header headers = {} headers['Content-Type'] = 'application/octet-stream' headers['Content-Disposition'] = 'attachment; filename=%s' % filename # get oss' target name name = self._get_target_name(name) content.open() content_str = b''.join(chunk for chunk in content.chunks()) self.bucket.put_object(name, content_str, headers=headers) # add headers content.close() return self._clean_name(name)
相关文章推荐
- 学习使用dwr 中的push技术 服务器发送一个广播,让每一个客户端都能接收到这个广播。
- 微软企业库4.1学习笔记(十六)缓存模块4 服务器场中的缓存使用
- debian学习笔记3, 使用技巧,查看服务器信息,硬盘容量,版本,温度.apt和aptitude,dpkg
- 微软企业库4.1学习笔记(十六)缓存模块4 服务器场中的缓存使用
- 在服务器上使用第三方独立组件对Word/Excel进行编程
- 为使用 DB2 UDB 配置第三方应用服务器
- Acegi Security System使用 LDAP 目录服务器学习
- PHP学习笔记【3】--apache服务器使用和配置
- Django学习笔记(7)---多数据库中跨数据库使用多对多
- 使用Apache服务器wsgi方式部署Django应用
- 使用Django内置Web服务器和sqlite3遇到的问题及解决方法
- 【转】在服务器上使用第三方独立组件对Word/Excel进行编程
- Django学习笔记(8)--- Signals和GenericForeignKey的使用
- 在服务器上使用第三方独立组件对Word/Excel进行编程
- Pyhton_Django学习笔记(五) 模型与MYSQL数据库使用
- PHP学习笔记【3】--apache服务器使用和配置
- 微软企业库4.1学习笔记(十六)缓存模块4 服务器场中的缓存使用
- (转)Django ====> 实战学习篇十三 分页(Paginator)处理;Django使用内置的admin
- WebLogic Portal学习系列之二:在WebLogic中配置和使用第三方LDAP Server
- django,如何安装和使用第三方apps