Có một chức năng mã tải xuống trong dự án ASP.NET của tôi. Mã tải xuống như sau.
lớp công khai Tải xuống: IHttpHandler
{
void void DownloadPsListingProduct(Hướng dẫn nào)
{
đường dẫn chuỗi = GetFilePathFromGuid(which);
Tệp FileInfo = FileInfo mới (đường dẫn);
Phản hồi httpResponse = HttpContext.Current.Response;
phản hồi.ClearContent();
phản hồi.Clear();
reply.ContentType = "ứng dụng/octet-stream";
reply.AddHeader("Bố trí nội dung",
"đính kèm;tên tệp=\"" + file.Name.NeutralizationCrlfSequences() + "\";");
phản hồi.TransmitFile(file.FullName);
phản hồi.Flush();
phản hồi.End();
}
bool công khai có thể tái sử dụng
{
lấy
{
trả về sai;
}
}
}
Mã này hoạt động như một cơ duyên khi tôi tải xuống các tệp đơn lẻ cùng một lúc. Nhưng khi một tệp đang trong quá trình tải xuống và tôi yêu cầu tải xuống một tệp khác, trước tiên nó sẽ đợi tệp đầu tiên được tải xuống và sau đó tệp thứ hai bắt đầu tải xuống.
LƯU Ý: Tôi đang gửi yêu cầu mới để tải xuống từng tệp.
Tôi muốn tránh hành vi tải xuống một tệp này và người dùng sẽ có thể tải xuống tệp mà không cần đợi tệp trước đó hoàn tất.
ASP.NET Web API 2 có thể xử lý vấn đề này một cách rất đơn giản. Có một ví dụ đây , nhưng tôi sẽ nhắc lại những phần quan trọng:
lớp công khai FilesController: ApiController
{
IHttpActionResult công khai (Id tệp hướng dẫn)
{
var filePath = GetFilePathFromGuid(fileId);
var fileName = Path.GetFileName(filePath);
var mimeType = MimeMapping.GetMimeMappting(fileName);
trả về OkFileDownloadResult(filePath, mimeType, fileName, this);
}
}
Tất nhiên, trong ASP.NET Web API 2, định tuyến kết nối, v.v. cũng giống như kết nối IHttpHandler
Hoàn toàn khác nhau, nhưng có rất nhiều ví dụ trên internet (bao gồm cả ở đây trên SO) về cách bắt đầu.
Tôi là một lập trình viên xuất sắc, rất giỏi!