【问题标题】:Django "chunked uploads" to Amazon s3Django“分块上传”到 Amazon s3
【发布时间】: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


【解决方案1】:

为了绕过该限制,您必须在客户端使用 resumable.js 之类的东西来分块上传,以便通过 REST 调用发送到服务器。在服务器端,您必须在推送到 s3 之前在服务器端重新组装文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-23
    • 2014-10-14
    • 2016-11-22
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    相关资源
    最近更新 更多