2015-09-21 4 views
2

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

Пользователь может щелкнуть любую ссылку и просмотреть содержимое файла с помощью некоторого URL-адреса.

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

Вот что я до сих пор ...

download.html

<ul> 
{% for file in match %} 
    <a href =/media/{{ file }}>{{ file }}</a> 
    <br></br> 
{% endfor %} 
</ul> 

мы рассматриваем файл с этой точки зрения ...

def xsendfile(request, path): 
    response = HttpResponse() 
    response['Content-Type']='' 
    response['X-Sendfile']= smart_str(os.path.join(settings.MEDIA_ROOT, path)) 
    return response 

используя этот адрес ..

url(r'^media\/(?P<path>.*)$', views.xsendfile), 

Я не уверен как справиться с этим или какой путь идти вниз

Любые указания очень ценятся! :)

вот мои изменения кода:

def xsendfile(request, path): 
    response = HttpResponse() 
    response['Content-Type']='' 
    response['Content-Disposition'] = "attachment; filename="+path 
    response['X-Sendfile']= smart_str(os.path.join(settings.MEDIA_ROOT, path)) 
    return response 

ответ

3

Вы почти там, но вам необходимо установить значение Content-disposition заголовка, например:

response['Content-Disposition'] = "attachment; filename='fname.ext'" 
+0

вы можете проверить свою реализацию – ajanakos

+0

если ваша реализация не работает после изменения вашего кода, возможно, ваш сервер не использует 'mod_xsendfile', который необходим для этого. Если вы хотите абстрагировать механизм отправки файлов и не привязываться к конфигурации сервера, вы можете найти эту библиотеку django: https://github.com/johnsensible/django-sendfile – fixmycode

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

  • Нет связанных вопросов^_^