mirror of
https://github.com/etesync/server
synced 2024-11-22 00:38:07 +00:00
Chunk download: use the new sendfile to serve files.
This commit is contained in:
parent
a19a982b1c
commit
9559a0fd35
@ -36,6 +36,7 @@ import nacl.signing
|
||||
import nacl.secret
|
||||
import nacl.hash
|
||||
|
||||
from .sendfile import sendfile
|
||||
from .token_auth.models import AuthToken
|
||||
|
||||
from .drf_msgpack.parsers import MessagePackParser
|
||||
@ -456,19 +457,11 @@ class CollectionItemChunkViewSet(viewsets.ViewSet):
|
||||
|
||||
@action_decorator(detail=True, methods=["GET"])
|
||||
def download(self, request, collection_uid=None, collection_item_uid=None, uid=None, *args, **kwargs):
|
||||
import os
|
||||
from django.views.static import serve
|
||||
|
||||
col = get_object_or_404(self.get_collection_queryset(), uid=collection_uid)
|
||||
# IGNORED FOR NOW: col_it = get_object_or_404(col.items, uid=collection_item_uid)
|
||||
chunk = get_object_or_404(col.chunks, uid=uid)
|
||||
|
||||
filename = chunk.chunkFile.path
|
||||
dirname = os.path.dirname(filename)
|
||||
basename = os.path.basename(filename)
|
||||
|
||||
# FIXME: DO NOT USE! Use django-send file or etc instead.
|
||||
return serve(request, basename, dirname)
|
||||
return sendfile(request, filename)
|
||||
|
||||
|
||||
class CollectionMemberViewSet(BaseViewSet):
|
||||
|
@ -173,6 +173,10 @@ ETEBASE_API_AUTHENTICATORS = (
|
||||
)
|
||||
ETEBASE_CREATE_USER_FUNC = "django_etebase.utils.create_user_blocked"
|
||||
|
||||
# Efficient file streaming (for large files)
|
||||
SENDFILE_BACKEND = "django_etebase.sendfile.backends.simple"
|
||||
SENDFILE_ROOT = MEDIA_URL
|
||||
|
||||
# Make an `etebase_server_settings` module available to override settings.
|
||||
try:
|
||||
from etebase_server_settings import *
|
||||
|
Loading…
Reference in New Issue
Block a user