Html 在同一页上下载和/或查看.pdf
我使用的是IIS/asp.net,需要在同一页上并排有两个链接。它们都链接到同一个文件,但有两种不同的行为,一种是查看文件,另一种是下载文件Html 在同一页上下载和/或查看.pdf,html,iis,anchor,mime,content-disposition,Html,Iis,Anchor,Mime,Content Disposition,我使用的是IIS/asp.net,需要在同一页上并排有两个链接。它们都链接到同一个文件,但有两种不同的行为,一种是查看文件,另一种是下载文件 <a title="Specifications" href="/filename.pdf"> <img alt="View Icon" src="/images/viewIcon.jpg" /> </a> <a title="Specifications" href="/filename.pdf"&
<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中添加一些内容
谢谢 如果要强制执行,可以在服务器端执行。我不确定您使用的是webforms还是mvc,但无论哪种方式,您都可以在服务器端的标题中添加如下内容: AddHeader(“内容处置”、“附件;文件名=whatevernamehere.pdf”) 这将强制浏览器作为附件下载。您只需对“下载”链接执行此操作,而不必使用“查看”链接(在浏览器中查看)
希望有帮助 我最终接受了别人给我的建议。我的整个解决方案如下 我的第一步是在名为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;}}
}
使用制度;
使用System.Web;
公共类文件下载:System.Web.IHttpHandler
{
公共void ProcessRequest(HttpContext上下文)
{
HttpResponse r=context.Response;
字符串文件名=context.Request.QueryString[“文件”];
r、 AddHeader(“内容处置”、“附件;文件名=“+filename”);
r、 ContentType=“应用程序/八位字节流”;
r、 WriteFile(context.Server.MapPath(文件名));
}
公共布尔可重用{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>
就这样!有一点回发闪烁,我不希望有,但它做我需要的。感谢推送秃头程序员。我问过关于右键单击-->另存为的问题,他们不感兴趣;)在下面发布了我的整个解决方案。请注意,如果您的文件名包含不允许出现在无引号的名称中的字符,例如逗号或空格,则该代码将失败。