我正在构建一个基于django的数据库应用程序,允许用户上传支持文档。到项目结束时,我们预计会有大约100万页的pdf。存储库将分解为3,000-5,000个不同的文件夹(由客户端指定)。我有一个记录这些文件的数据库表。该表包括文档的名称和文档存储在的文件夹。
我正在寻找将这些文档提供给客户的最佳方式。我有一个基本的搜索工具,在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尝试打开附件时,它会告诉我文件已损坏(或不受支持)。 任何意见都将非常感谢!
答案 0 :(得分: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