【问题标题】:Convert base64 to downloadable zip file in MVC c#在MVC c#中将base64转换为可下载的zip文件
【发布时间】:2013-10-30 04:19:48
【问题描述】:

我之前可以下载一个压缩文件,但是压缩发生在 ASP 服务器上。现在我们已将此操作更改为另一台服务器(进度)。

此时我收到一个 base64 编码的字符串,它代表一个 zip 文件。但是如何将此字符串转换为 zipfile。我之前使用的代码可以在下面找到,我可以重复使用代码吗?

MemoryStream outputStream = new MemoryStream();
outputStream.Seek(0, SeekOrigin.Begin);

using (ZipFile zip = new ZipFile())
{
   foreach (string id in idArray)
   {
        string json = rest.getDocumentInvoice(Convert.ToInt32(id));
        byte[] file = json.convertJsonToFile();
        zip.AddEntry("invoice" + id + ".pdf", file);
   }
    zip.Save(outputStream);
}


outputStream.WriteTo(Response.OutputStream);
Response.AppendHeader("content-disposition", "attachment; filename=invoices.zip");
Response.ContentType = "application/zip";
return new FileStreamResult(outputStream, "application/zip");

我不知道如何将字符串转换为 zip 文件。提前感谢您的帮助

【问题讨论】:

    标签: c# asp.net-mvc zip base64


    【解决方案1】:

    通过执行以下操作将 base64 转换为字节数组:

    Convert.fromBase64String(strBase64);
    

    然后我找到了一篇文章可以轻松下载zipfile

    Download file of any type in Asp.Net MVC using FileResult?

    本文建议:

    public FileResult Download()
    {
        string base64 = getBase64ZIP();
        byte[] byteArray = Convert.fromBase64String(base64);
        return File(byteArray, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
    }
    

    【讨论】:

      【解决方案2】:

      使用Convert.FromBase64String 获取压缩文件的字节数。

      string base64String = rest.getDocumentInvoice(Convert.ToInt32(id));
      byte[] file = Convert.FromBase64String(base64String);
      using(var stream = new MemoryStream(file))
      {
          zip.AddEntry("invoice" + id + ".pdf", stream);
      }
      

      【讨论】:

        【解决方案3】:

        试试这个:

        HTML:

        >  <a id='dwnldLnk' download='myzip.zip' style="display:none;" /> 
            >     <a ng-click="saveFile()">myzip.zip</a>
        

        控制器:

        var dataBase64 = "UEsDBAoAAAAAAORSo04AAAAAAAAAAAAAAAAEABwAc3VtL1VUCQADG7TLXKu/y1x1eAsAAQToAwAABOgDAABQSwMEFAAAAAgAe3WTTkQjafoxAAAAMgAAAAoAHABzdW0vc3VtLmdvVVQJAAM6fLlcha3LXHV4CwABBOgDAAAE6AMAACtITM5OTE9VKC7N5eJKK81LVgguzS3WSNRJUsjMK9EEEdVcnEWpJaVFeQqJ2klctQBQSwMEFAAAAAgAtkqWTksgx3NnAgAAPgQAAAcAHABtYWluLmdvVVQJAAM4Jb1cha3LXHV4CwABBOgDAAAE6AMAAHVTX0/bMBB/Jp/i5KeUlWTjkYmHDKiIxtKJlCGEeHCTS2qR2JntECrEd99dmm6VJvJi2b77/TsnPg7gGG5UgdphCd6A3yAknSxoyU3lB2kRFqbXpfTKaAiTfDED2qIFoxGMhdZYZJTCaG/Vuvd01uwQQdYWsUXtXQSQI47w2XKVXlxBpRqEUrldE7EPym8YyG+Ug8HYZ6gISpalYmrZgNJ00O6EWKylLZWuibfbWlVvPJhBo3Ub1UUMs2In+WKvxe1wR1by+WD6ycaB4ymIOfwiHGY5jT4zVMg1YroVs6+wpe5WbkEbD73DA2h8LbDzJJV0tV2jpC7wwNlfDsrjYQIxay+pXo5OwFSHZSA9NXIvfxvvu7M4HoYhkqPiyNg63huMbyjWLL862anmpjvdoHMU1u9eWYp4vQXZkapCrklrIwce4DikcfikYrCUtq7n4KbpM8zhlP6FtpdI1g8LKDapQSQ5pLmAb0me5nMGuU9X18u7Fdwnt7dJtkqvcljewsUyu0xX6TKj3QKS7AG+p9nlHJAiIx587Sw7IJmK48RynO3+Ke0l8EPhveuwUJUqyJque1kj1OYFreZ30qFtleOxOhJYMkyjWuXH9+T+98VEcRBQzs8M1NKMgoBEGOshDI6E61tBS9V6Xsg//QAvIpgFQRzDD54oqRrk+EYp22tsGhNUvS7Gy1Da2hFo98jJ6fpJaY+2kgW+vc8+OIe34Ijoop904RsdCgYSs+CIIoKzc+p6xvADyLHoUdSGkzlhMyeTM/EE5yBGeXMQ8AkmK1HqjQzJZZT3rQu/zE9nI4rvLf9+Lnj/A1BLAQIeAwoAAAAAAORSo04AAAAAAAAAAAAAAAAEABgAAAAAAAAAEAD/QQAAAABzdW0vVVQFAAMbtMtcdXgLAAEE6AMAAAToAwAAUEsBAh4DFAAAAAgAe3WTTkQjafoxAAAAMgAAAAoAGAAAAAAAAQAAAP+BPgAAAHN1bS9zdW0uZ29VVAUAAzp8uVx1eAsAAQToAwAABOgDAABQSwECHgMUAAAACAC2SpZOSyDHc2cCAAA+BAAABwAYAAAAAAABAAAA/4GzAAAAbWFpbi5nb1VUBQADOCW9XHV4CwABBOgDAAAE6AMAAFBLBQYAAAAAAwADAOcAAABbAwAAAAA="
        var dataFile = 'data:application/zip;base64,' + dataBase64 
          var dlnk = document.getElementById('dwnldLnk');
          dlnk.href = dataFile;
          dlnk.click();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-07-19
          • 2020-06-02
          • 2019-12-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-06
          相关资源
          最近更新 更多