当前位置: 首页 > 编程语言 > C#

如何下载多个文件?获取“服务器无法在发送后清除HTTP标头”,分享

时间:2023-04-10 16:22:11 C#

如何下载多个文件?获取“服务器无法在发送后清除HTTP标头”。我有一个显示下载文件列表的MVC应用程序。用户选择带有复选框的文件,这些文件是使用Pechkin库在服务器端生成为PDF的。我的问题是,当下载多个文件时,出现错误“服务器无法在发送后清除HTTP标头”。我意识到这是因为我只能将一个HTTP响应发送回客户端,但我不知道如何解决这个问题。publicActionResultForms(FormsViewModelmodel){foreach(variteminmodel.Forms){if(item.Selected){CreatePdfPechkin(RenderRazorViewToString(model.FormType,model.Form),model.Name);}}返回视图(模型);}privatevoidCreatePdfPechkin(stringhtml,stringfilename){varpechkin=Factory.Create(newGlobalConfig());varpdf=pechkin.Convert(newObjectConfig().SetLoadImages(true).SetZoomFactor(1.1).SetPrintBackground(true).SetScreenMediaType(true).SetCreateExternalLinks(true),html);Response.Clear();Response.ClearContent();//第二个文件下载的下一行出错Response.ClearHeaders();回复。ContentType="应用程序/pdf";Response.AddHeader("Content-Disposition",string.Format("attachment;filename={0}.pdf;size={1}",filename,pdf.Length));回复。二进制写入(pdf);响应.Flush();响应.End();我应该使用什么模式来实现这一目标?您可以压缩所有选定的文件并发送它们。Codeplex上有一个名为DotNetZip的库。这就是压缩的方式。以上就是C#学习教程:如何下载多个文件?获取“服务器无法在发送后清除HTTP标头”。如果分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注——varoutputStream=newMemoryStream();使用(varzip=newZipFile()){zip.AddFile(“文件一的路径”);zip.AddFile("文件二的路径");zip.AddFile("文件三的路径");zip.AddFile("文件四的路径");zip.Save(outputStream);}outputStream.Position=0;returnFile(outputStream,"application/zip","zip文件名.zip");本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: