0

我正在使用 IIS/asp.net,并且需要在同一页面上并排放置两个链接。它们都链接到同一个文件,但有两种不同的行为,一个应该查看文件,另一个应该下载文件。

<a title="Specifications" href="/filename.pdf">
   <img alt="View Icon" src="/images/viewIcon.jpg" />
</a>    
<a title="Specifications" href="/filename.pdf">
   <img alt="Download Icon" src="/images/downloadIcon.jpg" />
</a>

在此处输入图像描述

我在这里看到了一些关于通过 MIME 类型或通过强制一种行为或另一种行为的提示Content-Disposition: attachment

但无论如何,有没有这种安排,两者都住在同一页面上?理想情况下,我希望能够向链接本身或 href 添加一些内容。

谢谢!

4

2 回答 2

1

如果你想强制它,你可以在服务器端进行。我不确定您使用的是 webforms 还是 mvc,但无论是在服务器端,您都可以在标题中添加类似这样的内容:

Response.AddHeader("Content-Disposition", "attachment;filename=whatevernamehere.pdf");

这将强制浏览器作为附件下载。您只需对“下载”链接执行此操作,并单独保留“查看”链接(在浏览器中查看)。

希望有帮助!

于 2012-07-16T21:22:50.820 回答
0

我最终接受了我得到的建议。我的整个解决方案如下。

我的第一步是在站点的根目录中创建一个处理程序,我称之为 fileDownload.ashx。

<%@ WebHandler Language="C#" Class="fileDownload" %>
using System;
using System.Web;

public class fileDownload : System.Web.IHttpHandler
{
    public void ProcessRequest (HttpContext context) 
    {
        HttpResponse r = context.Response;
        string fileName = context.Request.QueryString["file"];
        r.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
        r.ContentType = "application/octet-stream"; 
        r.WriteFile(context.Server.MapPath(fileName));
    }
    public bool IsReusable { get { return false;}}
}

接下来更新链接...

<a title="Specifications" href="/filename.pdf">
   <img alt="View Icon" src="/images/viewIcon.jpg" />
</a>    
<a title="Specifications" href="/fileDownload.ashx?file=/filename.pdf">
   <img alt="Download Icon" src="/images/downloadIcon.jpg" />
</a>

就是这样!有一点回发闪烁,我不希望有,但它可以满足我的需要。感谢推秃程序员。

于 2012-07-19T03:32:58.330 回答