我的 ASP.NET 项目中有下载代码功能,下载代码如下所示。
public class Download : IHttpHandler
{
private void DownloadPsListingProduct(Guid which)
{
string path = GetFilePathFromGuid(which);
FileInfo file = new FileInfo(path);
HttpResponse response = HttpContext.Current.Response;
response.ClearContent();
response.Clear();
response.ContentType = "application/octet-stream";
response.AddHeader("Content-Disposition",
"attachment;filename=\"" + file.Name.NeutralizationCrlfSequences() + "\";");
response.TransmitFile(file.FullName);
response.Flush();
response.End();
}
public bool IsReusable
{
get
{
return false;
}
}
}
当我一次下载单个文件时,这段代码就像一个魅力。 但是当一个文件正在下载过程中,我要求下载另一个文件时,它首先等待第一个文件下载完成,然后第二个文件开始下载。
注意:我正在发送下载每个文件的新请求。
我想避免这种单个文件下载行为,并且用户应该能够在不等待前一个文件完成的情况下下载文件。
最佳答案
ASP.NET Web API 2 应该能够以非常简单的方式处理这个问题。有一个例子 here ,但我会重申重要部分:
public class FilesController : ApiController
{
public IHttpActionResult(Guid fileId)
{
var filePath = GetFilePathFromGuid(fileId);
var fileName = Path.GetFileName(filePath);
var mimeType = MimeMapping.GetMimeMappting(fileName);
return OkFileDownloadResult(filePath, mimeType, fileName, this);
}
}
当然,在 ASP.NET Web API 2 中连接路由等与连接 IHttpHandler
完全不同,但互联网上也有大量示例(包括此处的 SO)如何开始。
关于c# - 下载文件 - 防止第二次下载,直到第一次完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42245147/