1

我在 asp.net 中有一个网站。我已经将它托管在我的服务器上。我的服务器有 3 个名为 C、D、E 的目录。我的 Asp.net 应用程序位于 C 驱动器中。在一个模块中,我上传了一些图像,这些图像存储在我的服务器的 D 目录中。现在我想从 asp.net 代码访问它,但它显示一条错误消息:“asp.net is a physical path but a virtual path is expected”。我如何从这个场景中访问我的图像。请帮助我..我的代码如下..

ImageButton lnkbtn = sender as ImageButton;

       GridViewRow gvrow = lnkbtn.NamingContainer as GridViewRow;
       string fileName = grvImpact.DataKeys[gvrow.RowIndex].Values[3].ToString();
       string filePath = "D://Upload//CRDocument//" + fileName.ToString();

       if (fileName != null)
           {
           Response.ContentType = "image/jpg";
           Response.AddHeader("Content-Disposition", "attachment;filename=\"" + filePath + "\"");
           Response.TransmitFile(filePath);
           Response.End();
           }

它不起作用...

4

2 回答 2

2

使用Server.MapPath指定映射到物理目录的相对或虚拟路径。

string FilePath;
FilePath = Server.MapPath("/MyWebSite");
于 2013-08-13T09:41:42.413 回答
0

假设你有

网址

www.mydomain.com/D/images/MyMegaImage.jpg

文件系统

c:\inetpub\mywebsite\wwwroot\D\images\MyMegaImage.jpg

在代码中你会有类似的东西

string imageFileName = "MyMegaImage.jpg";
string FullFilePath = HttpContext.Current.Server.MapPath("/D/images/" + imageFileName);

那么变量 FullFilePath 应该在 "c:\inetpub\mywebsite\wwwroot\D\images\MyMegaImage.jpg" 中计算

于 2013-08-13T09:50:39.327 回答