Trong ASP.Net (với C#) Tôi đang cố gắng tạo tệp .DAT với văn bản thuần túy trong đó và gửi tệp đó đến trình duyệt và tải xuống lực. Tôi đã thử nhiều thứ nhưng tôi không thể làm việc đó được. Trong aspx-file của tôi có một ImageButton
Tải xuống ASP.Net
<asp:ImageButton ID="btnSave" runat="server" CausesValidation="False" ImageUrl="~/Images/Stages/Database/Save.png" OnClick="btnSave_OnClick" Width="26px" />
Trong OnClick-phương pháp Tôi đang cố gắng để tạo ra các tập tin và gửi nó đến trình duyệt.
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();
}
}
Tệp test.dat tồn tại trong thư mục chính xác và phải bị xóa sau khi đã được đọc thành byte. Tôi đã thử điều này mà không xóa các tập tin và đó sẽ không làm việc hoặc.
Sau khi nhấp vào btnLưu nút phải được ẩn, vì vậy đó là lý do tôi đặt tham số Hiển thị thành sai.
Tôi cũng đã thử nó với loại nội dung "ứng dụng/octet-stream" hoặc với tệp PDF và loại nội dung "application/pdf" nhưng không có gì hoạt động. Trang tải bình thường và không có tệp nào đang được tải xuống.
Tôi nghi ngờ một phần phản hồi sẽ được gửi trước tiêu đề. Tôi cũng không hiểu làm thế nào bạn mong đợi một phản ứng duy nhất để tải về một tập tin, và làm cho một nút vô hình cùng một lúc. – CodesInChaos
Tôi đã nghĩ điều gì đó tương tự nhưng làm cách nào tôi có thể thực hiện công việc này? – Yoni
Như một lưu ý phụ: xem 'File.ReadAllBytes' có thể thay thế 5 dòng bạn sử dụng để đọc tệp. Bạn chỉ nên làm điều đó với các tệp rất nhỏ, có thể lên đến 10kB. – CodesInChaos