Django将“批量上传”到Amazon s3

时间:2018-11-23 15:15:54

标签: django cloudflare django-storage

我们正在使用S3Boto3Storage将媒体文件上传到我们在Amazon上的s3存储中。效果很好。由于我们将Cloudflare用作“免费”版本,因此每个请求仅限于maximum of 100MB。这是个大问题。甚至企业计划限制为500MB。

是否可以使用一种“块上传”来绕过每个请求100MB的限制?

model.py

   class Media(models.Model):
        name = models.CharField(max_length=100, null=True)
        file = models.FileField(upload_to=get_path)

storage.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)

1 个答案:

答案 0 :(得分:0)

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