2012-05-14 6 views
1

Я создаю приложение базы данных на основе django, которое позволяет пользователям загружать вспомогательную документацию. К концу проекта мы ожидаем около 1 миллиона страниц pdf. Репозиторий будет разбит на 3000-5000 различных папок (это указано клиентом). У меня есть одна таблица db, записывающая эти документы. Таблица содержит имя документа и папку, в которой хранится документ.Обслуживание загруженных пользователем файлов из репозитория документов на основе django

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

Могу ли я использовать приложение staticfiles для этого? Я обеспокоен тем, что staticfiles выглядит так, как будто он хочет копировать файлы из одного места в другое (что, вероятно, нецелесообразно, учитывая размер репозитория). Я также не уверен, как staticfiles справится с динамической структурой папок. Мы не будем знать структуру папок, пока файлы не будут загружены. Наконец, django docs говорит конкретно, что приложение статических файлов не предназначено для загруженных пользователем документов.

Может быть, мне просто нужно какое-то точка зрения Джанго, но я не могу получить следующий к работе -

def document(request, path, name): 
    path = os.path.join(settings.DOCUMENT_ROOT, path, name) 
    pdf = open(path, 'r') 
    response = HttpResponse(pdf, mimetype='application/pdf') 
    response['Content-Disposition'] = 'attachment; filename=' + name 
    return response 

Когда читатель самана пытается открыть вложение он говорит мне сам файл поврежден (или не поддерживается). Любой вход был бы признателен!

ответ

0

ОК на данный момент я просто хочу с простым видом Джанго -

@login_required 
@permission_required('reporting.can_view_documents', raise_exception=True) 
def document(request, path, name): 
    path = os.path.join(settings.DOCUMENT_ROOT, path, name) 
    pdf = open(path, 'rb') 
    response = HttpResponse(pdf.read(), mimetype='application/pdf') 
    response['Content-Disposition'] = 'attachment; filename=' + name 
    return response 
Смежные вопросы