asp.Net   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了下载ASP.NET MVC C#中字节数组列表中包含的多个文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个ASP.NET MVC 5应用程序,我写了一个代码,允许我下载存储在SQL Server数据库中的文件作为varbinary,我可以用这个下载单个文件:
public JsonResult PrepareSingleFile(int [] IdArray)
{
    ImageContext _contexte = new ImageContext();
    var response =_contexte.contents.Find(IdArray.FirstOrDefault());
    //byte[] FileData = 
    Encoding.UTF8.GetBytes(response.image.ToString());
    byte[] FileData = response.image;
    Session["data"] = FileData;
    Session["filename"] = response.Filename;

    return Json(response.FileName);
}

public FileResult DownloadSingleFile()
{
    var fname = Session["filename"];
    var data = (byte[]) Session["data"];
    //return File(data,"application/pdf");
    return File(data,System.Net.Mime.MediaTypenames.Application.Pdf,fname.ToString()+".pdf");
}

但现在我想下载多个文件,所以我将每个文件的数据作为字节数组并将这些字节数组放入List< byte []>我想将这些文件作为zip文件下载,那么我该怎么做呢?

我试过这个:

File(data,"the Mime Type","file name.extension")

但是当数据是List< byte []>时它不起作用.

解决方法

您可以使用.NET framework 4.5中提供的 ZipArchive类来实现.
您可以在控制器中添加一个接受List< byte []>的方法.参数然后将每个byte []转换为一个内存流并将其放入像这样的zip文件中,
public FileResult DownloadMultipleFiles(List<byte[]> byteArrayList)
    {
        using (MemoryStream ms = new MemoryStream())
        {
            using (var archive = new ZipArchive(ms,ZipArchiveMode.Create,truE))
            {
                foreach(var file in byteArrayList)
                {
                    var entry = archive.CreateEntry(file.filename +".pdf",CompressionLevel.Fastest);
                    using (var zipStream = entry.open()) 
                    {
                        zipStream.Write(file,file.Length);
                    }
                }
            }

            return File(ms.ToArray(),"application/zip","Archive.zip");
        }
    }

大佬总结

以上是大佬教程为你收集整理的下载ASP.NET MVC C#中字节数组列表中包含的多个文件全部内容,希望文章能够帮你解决下载ASP.NET MVC C#中字节数组列表中包含的多个文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。