Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 强制下载ASP.Net_C#_Asp.net_Webforms_Download - Fatal编程技术网

C# 强制下载ASP.Net

C# 强制下载ASP.Net,c#,asp.net,webforms,download,C#,Asp.net,Webforms,Download,在ASP.Net(使用C#)中,我试图创建一个包含纯文本的.DAT文件,并将其发送到浏览器并强制下载。我试过好几种方法,但都不能奏效。在我的aspx文件中有一个ImageButton <asp:ImageButton ID="btnSave" runat="server" CausesValidation="False" ImageUrl="~/Images/Stages/Database/Save.png" OnClick="btnSave_OnClick" Width="26px" /

在ASP.Net(使用C#)中,我试图创建一个包含纯文本的.DAT文件,并将其发送到浏览器并强制下载。我试过好几种方法,但都不能奏效。在我的aspx文件中有一个
ImageButton

<asp:ImageButton ID="btnSave" runat="server" CausesValidation="False" ImageUrl="~/Images/Stages/Database/Save.png" OnClick="btnSave_OnClick" Width="26px" />
文件test.dat存在于正确的文件夹中,必须在将其读入字节后将其删除。我已经尝试了这个没有删除文件,这也不会工作

单击btnSave后,按钮必须隐藏,因此我将Visible参数设置为false


我也尝试过使用内容类型“application/octetstream”或PDF文件和内容类型“application/PDF”,但都不起作用。页面正常加载,未下载任何文件。

文件字符串的路径是否正确

this.Response.AddHeader("content-disposition", "attachment;filename=" + file);
它不应该是文件名吗

为什么要在文件写入响应之前删除它?通过响应提供文件,然后将其删除不是更有意义吗

i、 e.电话

File.Delete(Server.MapPath(fileName));
在重复之后

你应该试试:

Response.TransmitFile( Server.MapPath(fileName) );
Response.End();
TransmitFile非常高效,因为它基本上将文件流卸载到IIS,包括可能导致文件缓存在内核缓存中(基于IIS的缓存规则)。
Response.End()

我尝试过不删除该文件,但也不起作用。在AddHeader方法中,只需填写建议的文件名。所以不是完整的路径,而是文件名的建议。您是否尝试过Response.TransmitFile()?一个新页面取代了BinaryWrite()。我创建了这个文件,然后重定向到一个“下载”页面,该页面只下载文件,现在它可以工作了。您的回答被标记为已接受,因为它对我最有帮助。我怀疑响应的某些部分会在标题之前发送。我也不明白你怎么会期望一个单一的响应来下载一个文件,同时使一个按钮不可见。我想了一些类似的东西,但我如何才能做到这一点?作为旁注:看看
文件。ReadAllBytes
,它可以取代你用来读取文件的5行。不过,你应该只使用非常小的文件,可能高达10kB。我不使用webforms,所以我不能帮你。我会使用javascript隐藏按钮,然后才触发下载。尝试了没有隐藏按钮,但也不起作用。该文件也超过50kb。
Response.TransmitFile( Server.MapPath(fileName) );
Response.End();
                Response.Clear();
                Response.ClearContent();
                Response.ClearHeaders();
                Response.ContentType = "text/plain";
                Response.AppendHeader("Content-Disposition", "attachment; filename = " + fileName);
                Response.TransmitFile(Server.MapPath("~/foldername/" + fileName));
                Response.End();