JavaScript+Asp.Net MVC5同时下载多个文件

前端同时启动多个下载任务(但是没有做压缩包下载)

前端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;
}
相关推荐
牛哇网络工作室5 小时前
UnityHDRP写实数字人全流程基础5—语音输入和语音识别
android·unity·c#·游戏引擎·aigc·语音识别·xcode
起床学FPGA7 小时前
AI回答问题之后,会自动跳到最下面的问题
开发语言·javascript·ecmascript
默_笙10 小时前
❗ 点击计数按钮,为什么"峨眉队"也跟着重新渲染?React.memo 说:我记住了
前端·javascript
名字还没想好☜11 小时前
Next.js 用 Server Components 直连数据库:去掉 API 层的边界,和三条别踩的安全红线
前端·javascript·数据库·安全·react·next.js
Brown.alexis12 小时前
es6知识点5-自备使用
前端·javascript·es6
杨利杰YJlio13 小时前
KB5121003更新详解:安全启动证书、AI组件、资源管理器与安装验证
前端·javascript·后端
3秒一个大14 小时前
JS 数组去重全方案:从基础到通用万能去重函数
前端·javascript
晴天1614 小时前
Electron面试题-Day19
java·javascript·electron
Hilaku14 小时前
为什么跳槽涨薪 30% 的时代彻底结束了?聊聊 2026 前端薪资的天花板
前端·javascript·程序员
zlinear数据采集卡15 小时前
数据采集卡从入门到精通(9):分辨率与精度——16位卡不等于1/65536的精度
开发语言·数据库·fpga开发·开源·c#