0

我在 html 表中显示对象列表。我希望他们下载链接文件的每一行前面都有下载链接。

我做了这个功能

def make_downloadable_link(path):
    #Prepare the form for downloading
    wrapper      = FileWrapper(open(mypath))
    response     = HttpResponse(wrapper,'application/pdf')
    response['Content-Length']      = os.path.getsize(mypath)  
    fname = mypath.split('/')[-1]  
    response['Content-Disposition'] = 'attachment; filename= fname'
    return response

如果我将它用于单个文件的硬编码路径,这工作正常。但我想制作一个通用视图,以便它适用于表中的所有文件

我在变量中有可用的文件路径,object.path但我很困惑如何将路径对象传递给下载文件视图。因为我想向用户隐藏该实际路径。

我不知道在下载文件视图的 URLs.py 文件中写什么

4

1 回答 1

1

你想做的是从对象获取实际的文件路径。正如您所说,文件路径存储在object.path其中,这很容易。

例如:

网址.py

url(r'^download/(?P<object_id>\d+)/$', "yourapp.views.make_downloadable_link", name="downloadable")

在views.py中:

def make_downloadable_link(object_id):

    # get object from object_id
    object = ObjectModel.objects.get(id=object_id)
    mypath = object.path

    #prepare to serve the file
    wrapper      = FileWrapper(open(mypath))
    response     = HttpResponse(wrapper,'application/pdf')
    response['Content-Length']      = os.path.getsize(mypath)  
    fname = mypath.split('/')[-1]  
    response['Content-Disposition'] = 'attachment; filename= fname'
    return response
于 2012-12-03T06:01:55.753 回答