我正在try 使指向Windows服务器上的文件路径的链接可供用户在单击文件链接后下载.
我的应用程序显示搜索票证模型结果的条目.页面上的结果包括以下项目:票证编号、描述、状态和指向平面文件的链接(存储在Windows服务器网络共享驱动器上;从\server.name\文件夹A\文件夹B\文件夹C\FILE到download.txt
注意事项
- \server.name、\文件夹A和\文件夹B是常量
- \文件夹C(以及要下载的文件是动态的(它们的位置和文件名将更改)
- 用户将不会上传文件.所有可下载的文件-都已保存到Windows共享中.
在显示页面/templatehtml上,我可以在一个表中列出我的所有值(甚至是我想要下载的文件的链接).然而,当我将鼠标悬停在浏览器底部的链接上时,我看到了file://server.name/folder A/folder B\\folder C\\file to download.txt
.是的,最后一个"斜杠"是正斜杠,而所有其他的"斜杠"都是反斜杠(不确定它们为什么要改变?)
当我将文件地址传递给模板时,它的格式是:\\server.name\\folder A\\folder B\\folder C\\file to download.txt
(当我在页面上显示文件路径时,我可以在测试中看到这一点.
如何让希望下载文件的用户可以下载指向Windows服务器上文件路径的链接?
html
<body>
<h1><p>Ticket Number: {{ thisincident.IncidentID }}</p></h1>
<h3>Description: {{ thisincident.Description }}</h3>
<h4><p>Full Description</h4> {{ thisincident.FullDescription | linebreaks }}</p>
Journal Entry #
Date
Person
Journal Entry
File Name
{% for f in je %}
{{ f.JE }}
{{ f.Date }}
{{ f.resource }}
{{ f.entry | linebreaks }}
<a href="{{ f.Location }}">Download</a>
{% endfor %}
View.py
def ticket_view(request, IncidentID):
file_contents = []
thisincident = ticket.objects.get(id=IncidentID)
for root, dirs, files in os.walk(thisincident.LocationPath):
for file in files:
if not file == 'manifest.json':
path_file = os.path.join(root, file)
path_file = path_file.replace(thisincident.LocationPath + "\\", "")
file_contents.append(path_file)
log_list = parseJElog(thisincident.logfiletoparse)
data = {
"thisincident": thisincident,
"result": file_contents,
"je":log_list
}
return render(request, "tickethtml", data)
Urls.py
urlpatterns = [
url(r'^homepage/$', views.home, name='home'),
url(r'^tickets/$', views.tickets, name='tickets'),
url(r'^ticket/(?P<IncidentID>\d+)$', views.ticket_view, name='ticket'),
]
if settings.DEBUG:
urlpatterns+=static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Settings.py
MEDIA_BASE_ROOT = "\\server.name\\folder A\\folder B"
MEDIA_ROOT = os.path.join(MEDIA_BASE_ROOT, "\\folder B\\")
MEDIA_URL = ''
我对Django还很陌生,所以任何帮助都将不胜感激.