我使用的是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中添加一些东西。
谢谢!
答案 0 :(得分:1)
如果你想强制它,你可以在服务器端执行。我不确定你是使用webforms还是mvc,但无论是在服务器端,你可以在标题中添加这样的东西:
Response.AddHeader(“Content-Disposition”,“attachment; filename = whatevernamehere.pdf”);
这会强制浏览器作为附件下载。您只需要为“下载”链接执行此操作,并单独保留“查看”链接(以在浏览器中查看)。
希望有所帮助!
答案 1 :(得分: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>
多数民众赞成!有一点回发闪烁,我宁愿没有,但它做我需要的。感谢推送Bald Programmer。