前端同时启动多个下载任务(但是没有做压缩包下载)
前端JavaScript脚本:
javascript
var idList = [1,2,3];//要下载的列表
$.each(idList, function (index, item) {
downloadURL("/File/GetPdf?id=" + item);
});
var count = 0;
var downloadURL = function downloadURL(url) {
var hiddenIFrameID = 'hiddenDownloader' + count++;
var iframe = document.createElement('iframe');
iframe.id = hiddenIFrameID;
iframe.style.display = 'none';
document.body.appendChild(iframe);
iframe.src = url;
}
后端:
javascript
//FileController
public ActionResult GetPdf(int id)
{
string fileName = "文件名";
string path = "/filepath/";//文件路径
string url = path + fileName ;
if (url.Contains(".pdf"))
{
return File(DownLoadFielToMemoryStream(url), "application/pdf", fileName);
}
else
{
return Content("<script>alert('文件格式错误')</script>");
}
}
private static MemoryStream DownLoadFielToMemoryStream(string url)
{
var wreq = HttpWebRequest.Create(url) as HttpWebRequest;
HttpWebResponse response = wreq.GetResponse() as HttpWebResponse;
MemoryStream ms = null;
using (var stream = response.GetResponseStream())
{
Byte[] buffer = new Byte[response.ContentLength];
int offset = 0, actuallyRead = 0;
do
{
actuallyRead = stream.Read(buffer, offset, buffer.Length - offset);
offset += actuallyRead;
}
while (actuallyRead > 0);
ms = new MemoryStream(buffer);
}
response.Close();
return ms;
}