2013-07-15 3 views
0

Я собираюсь скачать файл в Django. Я нашел много способов сделать это, и никто не работает для меня. Кто-нибудь может мне помочь? Это мой фактический код в views.py:Django скачать файл

if form.is_valid(): 
     format = form.cleaned_data['format'] 
     x.saveCalculatedRoute(tempRoute+request.user.username, format) 

     path_to_file = '/var/www/tottrack/media/zones/temp/marc.osm' 
     response = HttpResponse(mimetype='application/force-download') 
     response['Content-Disposition'] = 'attachment; filename=prova.osm' 
     response['X-Sendfile'] = smart_str(path_to_file) 

     return response 

Он загружает пустой файл, как я могу его заполнить? Танки !!

+1

Вы включили 'mod_xsendfile'? что происходит, когда вы просто передаете файл методу «HttpResponse»? 'wrapper = FileWrapper (open (путь," r ")); response = HttpResponse (wrapper, content_type = content_type) ' – dm03514

ответ

1

Я лично поместил бы этот файл в медиа-каталог и позволял бы вашему серверу выполнять потоковое преобразование файла, а не django, если вам это действительно не нужно.

, обслуживающий статические файлы в django, действительно неэффективен, поэтому вам всегда лучше делать это через веб-сервер, который был специально оптимизирован для обслуживания данных.

Из Джанго Docs https://docs.djangoproject.com/en/1.5/howto/static-files/#configuring-static-files

Обслуживание файлов

В дополнение к этим шагам конфигурации, вы также должны фактически обслуживать статические файлы.

В процессе разработки, это будет сделано автоматически при использовании runserver и DEBUG установлен в True (см django.contrib.staticfiles.views.serve()).

Этот метод является крайне неэффективным и, вероятно, небезопасным, поэтому он непригоден для производства.

См. Раздел «Развертывание статических файлов для правильных стратегий обслуживания статических файлов в производственных средах».

+0

Теперь я в разработке, я пробовал с view.serve (request, path_to_file), но он может найти файл: '/ var/www/tottrack/media/zones /temp/marc.osm 'не удалось найти – user2170928

Смежные вопросы