为什么超链接没有打开文件?

时间:2015-04-28 04:55:38

标签: asp.net file c#-4.0 hyperlink

早期开发人员使用标签放置此代码,并在运行时将其转换为超链接。

<asp:Label ID="lbl_Attachment" runat="server">
</asp:Label>

lbl_Attachment.Text = "<a href='../Uploads/" + 
                      ds_row["Attachment"].ToString() + "'>" + 
                      ds_row["Attachment"].ToString() + "</a>";

但这不起作用。所以我将代码更改为以下内容以在新的浏览器选项卡中打开任何文件(image / pdf / word),错误仍然存​​在:

      hyperlinkAppDoc.NavigateUrl = 
          ResolveUrl("../Uploads/" + 
          ds_row["Attachment"].ToString());
      hyperlinkAppDoc.Target = "_blank";  

enter image description here

我该怎么做才能解决这个问题? IIS中提供MIME类型。

更新 我正在尝试一种不同的方法。但是Server.MapPath在本地驱动器而不是wwwroot。如何指向wwwroot文件夹的路径?

string pdfPath = Server.MapPath("~/SomeFile.pdf");
WebClient client = new WebClient();
Byte[] buffer = client.DownloadData(pdfPath);
Response.ContentType = "application/pdf";
Response.AddHeader("content-length", buffer.Length.ToString());
Response.BinaryWrite(buffer);

3 个答案:

答案 0 :(得分:0)

您可以使用asp.hyperlink。喜欢以下

<asp:HyperLink id="hyperlink1" NavigateUrl="<set_from_code_behind>" Text="Text to redirect" runat="server"/>

并从后面的代码中设置NavigateUrl,如下所示。

hyperlink1.NavigateUrl= "Uploads/" + ds_row["Attachment"].ToString();

答案 1 :(得分:0)

在您的情况下,我建议您在网络配置文件中的<appSettings>标记中添加一个密钥。

<appSettings>    
    <add key="WebsiteURL" value="http://localhost:1234/WebsiteName/"/>
</appSettings>

下一步是在.Aspx文件中使用一个超链接。

<asp:HyperLink ID="HyperLink1" runat="server" Target="_blank"></asp:HyperLink>

在连接后面的代码AppSettings Key +从root下载文件路径。

string base_path = ConfigurationSettings.AppSettings["WebsiteURL"];
HyperLink1.NavigateUrl = base_path + "Uploads/" + ds_row["Attachment"].ToString();

如果您有任何疑问,请与我们联系。

答案 2 :(得分:0)

所有的汗水都是由于路径问题造成的。旧代码和新代码有效。不需要Web客户端代码。

上传路径设置在此处:

public static string UploadDirectory = ConfigurationManager.AppSettings["UploadDirectory"];

它指向根目录中除应用程序之外的其他目录。因此,文件只上传但从未被提取。

我现在把它改为AppDomain.CurrentDomain.BaseDirectory。在我们与用户交谈之后,我们将相应地进行设置。