Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Django AliCloud OSS Storage

**django-oss-storage** 基于**阿里云OSS服务** 实现了[Django File storage API](https://docs.djangoproject.com/en/3.2/ref/files/storage/)


## 功能、安装、使用方式参考[官方repo](https://github.com/aliyun/django-oss-storage/)

## 新增功能

### OSS自定义域名
增加 **OSS_USER_DOMAIN** 配置项目。

```
OSS_USER_DOMAIN = "https://oss.my.domain"
```

Ps. 如果在阿里云VPC内网环境,将 OSS_ENDPOINT 配置为 OSS VPC 内网域名可以优化OSS访问。
116 changes: 0 additions & 116 deletions README.rst

This file was deleted.

12 changes: 10 additions & 2 deletions django_oss_storage/backends.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,20 @@ def __init__(self, access_key_id=None, access_key_secret=None, end_point=None, b
self.access_key_id = access_key_id if access_key_id else _get_config('OSS_ACCESS_KEY_ID')
self.access_key_secret = access_key_secret if access_key_secret else _get_config('OSS_ACCESS_KEY_SECRET')
self.end_point = _normalize_endpoint(end_point if end_point else _get_config('OSS_ENDPOINT'))
self.user_domain = _normalize_endpoint(_get_config('OSS_USER_DOMAIN')) if _get_config('OSS_USER_DOMAIN', default="") else None
self.bucket_name = bucket_name if bucket_name else _get_config('OSS_BUCKET_NAME')
self.expire_time = expire_time if expire_time else int(_get_config('OSS_EXPIRE_TIME', default=60*60*24*30))

self.auth = Auth(self.access_key_id, self.access_key_secret)
self.service = Service(self.auth, self.end_point)
self.bucket = Bucket(self.auth, self.end_point, self.bucket_name)
self.bucket = Bucket(self.auth, self.end_point, self.bucket_name, is_cname=False)
self.bucket_signer = self.bucket # for url signature

if self.user_domain:
self.bucket_signer = Bucket(self.auth, self.user_domain, self.bucket_name, is_cname=True)
if self.end_point == self.user_domain:
self.bucket = self.bucket_signer


# try to get bucket acl to check bucket exist or not
try:
Expand Down Expand Up @@ -208,7 +216,7 @@ def listdir(self, name):

def url(self, name):
key = self._get_key_name(name)
str = self.bucket.sign_url('GET', key, expires=self.expire_time)
str = self.bucket_signer.sign_url('GET', key, expires=self.expire_time)
if self.bucket_acl != BUCKET_ACL_PRIVATE :
idx = str.find('?')
if idx > 0:
Expand Down