0

IIS/asp.net を使用しており、同じページに 2 つのリンクを並べて配置する必要があります。どちらもまったく同じファイルにリンクしていますが、2 つの異なる動作で、一方はファイルを表示し、もう一方はファイルをダウンロードする必要があります。

<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

強制したい場合は、サーバー側で行うことができます。Webフォームを使用しているか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>

それでおしまい!ポストバックのちらつきが少しありますが、それがないようにしたいのですが、それは私が必要としているものです。Bald Programmer を押してくれてありがとう。

于 2012-07-19T03:32:58.330 に答える