2012-04-09 6 views
1

コードビハインドでアンカーを使用し、そのアンカーをクリックするとpdfをダウンロードしようとしています。私はpageload上でうまく動作するものをダウンロードしているが、私はpdfのためにダウンロードするonlickを設定する方法がわからない。アンカータグのコードビハインドをonclickに設定してPDFをダウンロード

HtmlAnchor apdf = new HtmlAnchor(); 
apdf.ID = Guid.NewGuid().ToString("N"); 
apdf.InnerText = dsreport.Tables[0].Rows[0]["ImageName"].ToString(); 
apdf.Attributes.Add("style", "font-weight: bold; font-size: 13px; margin: 0px;font-family: Arial; color: #1e7c9b; text-decoration: underline"); 
apdf.Attributes.Add("onclick", ""); 

各onclickでは、以下のコードを設定する必要があります。そのため、pdfはクリック時のみダウンロードされます。

byte[] aByteArrayOfTheFile = (byte[])(dsreport.Tables[0].Rows[0]["ImageData"]); 
SendAsFileToBrowser(aByteArrayOfTheFile, "application/pdf", "downloaded.pdf"); 

UPDATE:

public static string SendAsFileToBrowser(byte[] File, string Type, string FileName) 
{ 
    string disp = "attachment"; 
    if (string.IsNullOrEmpty(FileName)) 
    { 
     disp = "inline"; 
    } 

    // set headers 
    //char r = HttpContext.Current.Response; 

    HttpContext.Current.Response.ContentType = Type; // eg "image/Png" 
    HttpContext.Current.Response.Clear(); 
    HttpContext.Current.Response.AddHeader("Content-Type", "binary/octet-stream"); 
    HttpContext.Current.Response.AddHeader("Content-Length", File.Length.ToString()); 
    HttpContext.Current.Response.AddHeader("Content-Disposition", disp + "; filename=" + FileName + "; size=" + File.Length.ToString()); 
    HttpContext.Current.Response.Flush();  

    // write data to requesting browser 
    HttpContext.Current.Response.BinaryWrite(File); 
    HttpContext.Current.Response.Flush(); 
    return ""; 
} 

pageload上、ないにOnclickに開き、これを使用しました。ユーザーがクリックしたときにのみダウンロードしたい

私はVS 2005とSQL Server 2005でc#2.0を使用しています。コードの後ろにonclickを設定するのは本当に頭がおかしくなります。助けてくれてありがとう! PDFはブラウザ

apdf.Attributes.Add( "onclickの"、「window.location.href =で閲覧可能であるためにあなたがしたい場合

答えて

0

これを試してみてください '../linktopdf/thepdf.pdf;' ");

pdfをダウンロードする場合は、content type responseをapplication/pdfに設定してashx Webサービスを作成し、そこからバイスとしてダウンロードできます。ダウンロードウィンドウが表示されます。

How to force a pdf download automatically?

+0

コードをもう一度見てください! – Ram

0

ああ、私はあなたが今必要なものを参照してください。ここ

は便利スレッドへのリンクです。これを試してください:

apdf.Click += new EventHandler(this.SendAsFileToBrowser); 

    container.Controls.Add(apdf);  

このコードは、Page_loadではなくページのPre_Initメソッドに配置してください。

これを試してみてください。

+0

ボタンのOnClickイベントにHTMLAnchorコードがあります。だから私はボタンをクリックするたびにpdfをダウンロードしていますが、代わりにリンクを表示したいときにリンクがクリックされたときだけ、pdfを開く必要があります。私は私が明確なケビンであることを望む。御時間ありがとうございます。 – Ram

関連する問題