При загрузке xls файла из кода загрузки django, файл не открывается, он показывает поврежденным
Вот мой код для загрузки xls с помощью python (Django)
views.py
def downloadfile(request, filename=''):
if filename != '':
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
filename = 'SampleExcel.xls'
filepath = BASE_DIR + "\SampleExcel\SampleExcel.xls"
path = open(filepath, encoding='cp437')
mime_type, _ = mimetypes.guess_type(filepath)
response = HttpResponse(path, content_type=mime_type)
response['Content-Disposition'] = "attachment; filename=%s" % filename
return response
else:
return HttpResponseRedirect("adduser", {})
С помощью этого кода я могу правильно скачать файл, но при открытии файла он выдает ошибку. Прилагаю скриншот ошибки.
Я пробовал этот код для решения,
if filename != '':
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
filename = 'SampleExcel.xls'
filepath = BASE_DIR + "\SampleExcel\SampleExcel.xls"
return FileResponse(open(filepath, 'rb') , True, filename)
else:
return HttpResponseRedirect("adduser", {})
Также не работает, выдает ошибку 'TypeError at /downloadfile/SampleExcel.xls HTTP status code must be an integer.", и он даже не загружается.
Пожалуйста, помогите мне. Я застрял здесь последние 3 дня.
Note: I need to download xls file only, as after downloading it I have to perform import functionality with that downloaded xls file. I can not change xls to xlsx.
Тот FileResponse
будет работать, проблема в том, что вы не задаете правильные аргументы ключевых слов.
response = FileResponse(path, as_attachment=True, filename=filename)
Это будет работать для вас.