我有一个设置,我需要从数据库下载多个文件(至少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类确实包含文件的全名和扩展名,但我不确定如何在这种情况下使用此信息。
任何帮助?
答案 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';