我正在尝试使用Server.MapPath使用虚拟目录(appdata)下载文件(example.tif)。虚拟目录指向与我的Web应用程序服务器(\\ servername \ folder)分开的服务器。
这个html可以运行,文件下载:
<a href="appdata/folder/example.tif" target="_blank">Map Link</a>
但是我需要使用ASP按钮/ ASPX页面,我在VB中编写服务器端代码。
<asp:Button runat="server" OnClick="btnSubmit_ServerClick" OnClientClick="return Validate()" Text="Submit" />
btnSubmit_ServerClick后面的VB代码:
Imports System.IO
Imports System.Web.HttpContext
Public Class WebApp
Inherits System.Web.UI.Page
Sub btnSubmit_ServerClick(ByVal source As Object, ByVal e As System.EventArgs)
Dim server As String = Current.Server.MapPath("~/appdata")
Dim fi As String = server & "\\folder\\example.tif"
Dim header As [String] = "Attachment; Filename=example.tif"
Dim dfile As New FileInfo(fi)
Try
'If file exists download it.
If File.Exists(fi) Then
Response.ContentType = "application/octet-stream"
Response.AppendHeader("Content-Disposition", header)
Response.WriteFile(dfile.FullName)
Response.[End]()
End If
Catch ex As Exception
lblError.Text = ex.ToString
End Try
End Sub
End Class
我认为问题与Server.MapPath如何读取我的虚拟目录有关,因为我能够在调试并将“server”字符串替换为物理路径(\ servername \ folder)时在Visual Studio中下载该文件 我尝试了these个不同的符号,并尝试在example.tif前面取出“\”。数据服务器需要凭据来访问文件,因此我们的中央IT人员提供的解决方案是提供虚拟目录。并且HTML链接无论权限如何都有效,因此我认为它的权限不会发生。帮助赞赏!谢谢!
编辑:我在server.mappath中添加了“〜”。 Fi返回D:Web Files“0appdata \ folder \ example.tif