【发布时间】:2018-11-23 15:15:53
【问题描述】:
我们正在使用S3Boto3Storage 将媒体文件上传到我们在亚马逊上的 s3 存储。这工作得很好。由于我们将 Cloudflare 用作“免费”版本,因此每个请求仅限于 maximum of 100MB。这是个大问题。甚至企业计划也限制为 500MB。
有没有办法使用一种“分块上传”来绕过每个请求 100MB 的限制?
模型.py
class Media(models.Model):
name = models.CharField(max_length=100, null=True)
file = models.FileField(upload_to=get_path)
存储.py
from storages.backends.s3boto3 import S3Boto3Storage
class MediaStorage(S3Boto3Storage):
location = 'media'
file_overwrite = False
views.py
@api_view(['POST'])
def upload_media(request):
if request.method == 'POST':
serializer = MediaSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
【问题讨论】:
-
亚马逊建议对大文件进行分段上传。有一段时间没有使用 S3Boto3Storage,但也许你会发现这个要点很有用:gist.github.com/Hydriz/4413028 它包含一个 200mb 的多段上传示例。
标签: django cloudflare django-storage