Tôi đang truyền dữ liệu từ máy chủ đến ứng dụng khách để tải xuống bằng cách sử dụng filestream.write
. Trong trường hợp đó những gì đang xảy ra là tôi có thể tải xuống tệp nhưng nó không xuất hiện dưới dạng tải xuống trong trình duyệt của tôi. Cửa sổ bật lên cho "Lưu dưới dạng" xuất hiện không phải "Thanh tải xuống" xuất hiện trong phần Tải xuống. Từ nhìn xung quanh, tôi đoán tôi cần phải bao gồm "cái gì đó" trong tiêu đề phản hồi để cho trình duyệt biết rằng có tệp đính kèm với phản hồi này. Ngoài ra tôi muốn đặt cookie. Để thực hiện điều này, đây là những gì tôi đang làm:thêm tiêu đề vào phản hồi http trong một hành động bên trong bộ điều khiển trong asp.net/mvc
[HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=" & name)]
public ActionResult Download(string name)
{
// some more code to get data in inputstream.
using (FileStream fs = System.IO.File.OpenWrite(TargetFile))
{
byte[] buffer = new byte[SegmentSize];
int bytesRead;
while ((bytesRead = inputStream.Read(buffer, 0, SegmentSize)) > 0)
{
fs.WriteAsync(buffer, 0, bytesRead);
}
}
}
return RedirectToAction("Index");
}
Tôi nhận lỗi rằng: "System.web.httpcontext.current là một tài sản và được sử dụng như một loại"
Tôi có đang cập nhật tiêu đề ở đúng vị trí không? Có cách nào khác để làm điều này?
tôi đã cố gắng làm điều này.Nhưng nó vẫn không hiển thị hộp thoại "Lưu dưới dạng" và cũng không phải thanh tiến trình tải xuống trong phần tải xuống của trình duyệt. – ezile
Điều này làm việc cho tôi và tôi thấy html xem được tải xuống trong trường hợp thử nghiệm của tôi. Đối với bạn nó có thể là bởi vì bạn đang chuyển hướng hành động. Tôi đã không thử kịch bản này mặc dù. Chỉ cần thử đặt tiêu đề này trong Chỉ mục để thử. – PSL
Tôi sẽ chi tiết hơn một chút. Tôi đang ở trang "Chỉ mục" và sau đó nhấp vào Tải xuống, sau đó gọi Tải xuống hành động thông qua JavaScript. Đoạn mã trên được viết trong hành động Tải xuống. Và sau khi phát trực tuyến tệp cho người dùng, tôi chuyển hướng đến trang Chỉ mục. Tôi bối rối như trong khi nào tôi nên nói với trình duyệt rằng có một tải xuống. Tôi có nghĩa là tôi đang gửi các công cụ bằng cách sử dụng FileStream.WriteSync, vì vậy tôi đoán tôi cần phải nói với trình duyệt trước khi gửi tệp có tệp đính kèm và do đó nó sẽ bật lên hộp thoại "lưu dưới dạng". Tôi nghĩ rằng tôi đang bối rối trong công việc ở đây và do đó không khi nào và ở đâu tôi nên thực hiện thay đổi. – ezile