Когда я писала функцию для загрузки файла, то неважно было в какой он кодировке, он с помощью этого кода записывался таким, какой есть и нормально отображалось содержимое:
f = open("%s/doc_files/doc%s/%s" % (settings.MEDIA_ROOT, idDoc, hash + request.FILES[i].name), "wb")
for chunk in request.FILES[i].chunks():
f.write(chunk)
f.close()
Telling the browser to treat the response as a file attachment
To tell the browser to treat the response as a file attachment, use the mimetype argument and set the Content-Disposition header. For example, this is how you might return a Microsoft Excel spreadsheet:
>>> response = HttpResponse(my_data, mimetype='application/vnd.ms-excel')
>>> response = ‘attachment; filename=foo.xls’
Тоесть я так поняла, что нада считать файл, а потом вернуть. Но если файл в другой кодировке (не в utf8), то возвращаеться файл с абракадаброй.
from django.core.files import File
f = open("%s/doc_files/doc%d/%s" % (settings.MEDIA_ROOT, d.nomer, d.value), "r")
myfile = File(f)
a = myfile.read()
myfile.close()
response = HttpResponse(a, mimetype='application/vnd.ms-word')
response['Content-Disposition'] = 'attachment; filename=1.doc'
return response
И еще вопрос, нужно, чтобы в другой функции, если это файл html или txt, считать и вернуть ответ. Я не знаю как мне определить тип, чтобы знать, считывать файл или нет.