1

ユーザーがサポート ドキュメントをアップロードできるようにする django ベースのデータベース アプリを構築しています。プロジェクトの終了までに約 100 万ページの pdf を期待しています。リポジトリは 3,000 ~ 5,000 個の異なるフォルダーに分割されます (これはクライアントによって指定されます)。これらのドキュメントを記録する単一の db テーブルがあります。テーブルには、ドキュメントの名前と、ドキュメントが保存されているフォルダーが含まれています。

これらのドキュメントをクライアントに提供する最善の方法を探しています。ドキュメントを HTML テーブルに一覧表示する基本的な検索ツールがあります。アップロードされたドキュメントへの html リンクをテーブルに含めたいと思います。このリンクを作成する方法がわかりません。具体的には、ファイル自体を提供する方法がわかりません。Django のパーミッション システムを使用したいので、Apache を介して直接提供するのではなく、Django を使用したいと考えています。

これに staticfiles アプリを使用できますか? staticfiles がファイルをある場所から別の場所にコピーしたいように見えることを懸念しています (リポジトリのサイズを考えると、これはおそらく実用的ではありません)。また、静的ファイルが動的フォルダー構造にどのように対処するかもわかりません。ファイルが実際にアップロードされるまで、フォルダー構造はわかりません。最後に、django のドキュメントでは、静的ファイル アプリはユーザーがアップロードしたドキュメント用に設計されていないと具体的に述べています。

おそらく、ある種のdjangoビューが必要なだけですが、次を機能させることができません-

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

Adobe Reader が添付ファイルを開こうとすると、ファイルが破損している (またはサポートされていない) と表示されます。どんな入力でも大歓迎です!

4

1 に答える 1

0

とりあえず、単純な django ビューを使用します -

@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
于 2012-05-14T14:17:34.677 に答える