Как правильно скачать файл с django запросами - PullRequest
0 голосов
/ 22 октября 2019

Я запускаю приложение Django, где я могу загружать файлы. Теперь я хочу скачать файлы с помощью запросов. Я пытался создать представление о том, где файл загружается, чтобы я мог сделать звонок с запросами. Но это не совсем работает

My model: 

class FileCollection(models.Model):
    name = models.CharField(max_length=120, null=True, blank=True)
    store_file = models.FileField(storage=PrivateMediaStorage(), null=True, blank=True)
    creation_date = models.DateTimeField(null=True, blank=True)
My views



def fileview(request, *args, **kwargs):
    file = FileCollection.objects.first()
    file_path = file.store_file
    print(file_path)
    FilePointer = open(file_path, "r")
    response = HttpResponse(FilePointer, content_type='application/msexcel')
    response['Content-Disposition'] = 'attachment; filename=NameOfFile'

    return response


Это говорит мне, что TypeError: expected str, bytes or os.PathLike object, not FieldFile

Если я передам URL, указанный в apiview / admin, я получу: FileNotFoundError: [Errno 2] No such file or directory

Также пробовал:

def fileview(request):
    path = FileCollection.objects.first()
    obj = path.store_file
    o = str(obj)
    file_path = os.path.join(settings.MEDIA_ROOT, o)
    print(file_path)
    if os.path.exists(file_path):
        with open(file_path, 'rb') as fh:
            response = HttpResponse(fh.read(),
                                    content_type="application/vnd.ms-excel")
            response[
                'Content-Disposition'] = 'inline; filename=' + os.path.basename(
                file_path)
            return response

но это дает мне ValueError: The view file_storage_api.api.v1.views.fileview didn't return an HttpResponse object. It returned None instead.

Это правильный путь?

Я очень благодаренза помощь или намеки. Большое спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...