ASP.Net(C#付き)ではプレーンテキストの.DATファイルを作成してブラウザに送信し、強制的にダウンロードしようとしています。私はいくつかのことを試しましたが、それを働かせることはできません。私のaspxファイルでは、私はファイルを作成し、それをブラウザに送信しようとしているのOnClick-方法でImageButton
強制ダウンロードASP.Net
<asp:ImageButton ID="btnSave" runat="server" CausesValidation="False" ImageUrl="~/Images/Stages/Database/Save.png" OnClick="btnSave_OnClick" Width="26px" />
があります。
protected void btnSave_OnClick(object sender, EventArgs e)
{
string file = "test.dat";
string fileName = "~\\Stages\\Broekx\\Databanken\\" + file;
FileStream fs = new FileStream(MapPath(fileName), FileMode.Open);
long cntBytes = new FileInfo(MapPath(fileName)).Length;
byte[] byteArray = new byte[Convert.ToInt32(cntBytes)];
fs.Read(byteArray, 0, Convert.ToInt32(cntBytes));
fs.Close();
ImageButton btnSave = (ImageButton)FormViewStagesDummy.FindControl("btnSave");
btnSave.Visible = false;
File.Delete(Server.MapPath(fileName));
if (byteArray != null)
{
this.Response.Clear();
this.Response.ContentType = "text/plain";
this.Response.AddHeader("content-disposition", "attachment;filename=" + file);
this.Response.BinaryWrite(byteArray);
this.Response.End();
this.Response.Flush();
this.Response.Close();
}
}
ファイルtest.datは正しいフォルダに存在し、バイトに読み込まれた後で削除する必要があります。私はファイルを削除せずにこれを試してみたが、どちらもうまくいきません。
btnSaveをクリックした後、ボタンを非表示にする必要があります。そのため、パラメータVisibleをfalseに設定します。
コンテンツタイプ「application/octet-stream」やPDFファイルとコンテンツタイプ「application/pdf」でも試してみましたが、何も機能しません。ページは正常にロードされ、ファイルはダウンロードされません。
私は、応答の一部がヘッダーの前に送信されると思われます。また、1つのレスポンスでファイルをダウンロードし、同時にボタンを見えないようにする方法を理解していません。 – CodesInChaos
私は何か類似していると思ったが、どうすればこの仕事をすることができますか? – Yoni
サイドノートとして:あなたがファイルを読むのに使う5行を置き換えることができる 'File.ReadAllBytes'を見てください。非常に小さいファイル(おそらく最大10kB)でのみ行うべきです。 – CodesInChaos