使用带有虚拟目录的server.mappath在远程服务器上下载文件

时间:2016-03-03 00:21:59

标签: asp.net vb.net virtual-directory server.mappath

我正在尝试使用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

0 个答案:

没有答案