簡體   English   中英

從基於django的文檔存儲庫中服務用戶上傳的文件

[英]Serving user-uploaded files from a django based document repository

我正在構建一個基於django的數據庫應用程序,允許用戶上傳支持文檔。 我們預計到項目結束時將有大約一百萬頁pdf。 該存儲庫將細分為3,000-5,000個不同的文件夾(由客戶端指定)。 我有一個記錄這些文件的數據庫表。 該表包括文檔名稱和文檔存儲在其中的文件夾。

我正在尋找將這些文檔備份到客戶端的最佳方法。 我有一個基本的搜索工具,該工具在html表中列出了文檔。 我希望表格包含指向上載文檔的html鏈接。 我只是不確定如何創建此鏈接。 更具體地說,我不確定如何自己提供文件。 我想使用django,而不是直接通過apache服務,因為我想使用django的權限系統。

我可以使用staticfiles應用程序嗎? 我擔心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嘗試打開附件時,它會告訴我文件已損壞(或不受支持)。 任何投入將不勝感激!

暫時還可以,我只是使用簡單的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM