通过ASP下载多个文件

时间:2016-03-01 13:44:22

标签: c# asp.net

我有一个设置,我需要从数据库下载多个文件(至少2个),其中每个文件都通过ASP存储为二进制数组。我发现微软的一个例子几乎可以解决这个问题,但我似乎无法下载多个文件。它总是下载1个文件(即使有2个),然后调用它" FullActivity" (这是我所制作的I级的名字)。看起来像这样:

protected void download_btn_Click(object sender, EventArgs e)
{
    Int32 id = Int32.Parse(Request.QueryString.Get(0));

    List<ActivityFile> files = Facade.GetActivityFiles(id);
    StringBuilder msg = new StringBuilder();
    if (files.Count == 0)
    {
        msg.Append("No files were found for this activity.");
        String jsExec = Util.ModalAlert(msg.ToString(), "#info_modal", ".modal-body");
        ScriptManager.RegisterStartupScript(Page, GetType(), "ModalAlertShow", jsExec, false);
    }
    else
    {
        foreach (ActivityFile file in files)
        {
            //TODO: Perhaps find a dynamic way of doing this
            String folder = "\\\\jetfile01\\Users\\" + Util.GetUserAccount(this);
            switch (file.FileType)
            {
                case "pdf":
                    Response.ContentType = "Application/pdf";
                    break;
                case "docx":
                    Response.ContentType = "Application/msword";
                    break;
                case "doc":
                    Response.ContentType = "Application/msword";
                    break;
                case "xlsx":
                    Response.ContentType = "Application/x-msexcel";
                    break;
                case "xls":
                    Response.ContentType = "Application/x-msexcel";
                    break;
                default:
                    Response.ContentType = "text/plain";
                    break;
            }
            String filepath = MapPath(file.Name + "." + file.FileType);
            Response.BinaryWrite(file.FileBuffer);
            Response.Flush();
        }
        Response.End();
    }
}

我不确定我缺少什么,而且我也不知道如何命名该文件。我的ActivityFile类确实包含文件的全名和扩展名,但我不确定如何在这种情况下使用此信息。

任何帮助?

1 个答案:

答案 0 :(得分:1)

每个文件下载都是回复。

每个请求只能有一个响应(当然除了推送通知!)

相反,渲染一个包含链接的页面,或者单独下载每个文件的请求。

或者,下载包含多个文件的zip存档。

[编辑]

我只是想到了这一点,我不再相信它是真的!

这是我可能会这样做的。

[/编辑]

IFRAME解决方案HTML

<iframe id='frame1' name='frame1' />
<iframe id='frame2' name='frame2' />

剧本:

document.getElementById('frame1').src = 'downloadfile1.csv';
document.getElementById('frame2').src = 'downloadfile2.csv';