欢迎来到科站长!

ASP.NET

当前位置: 主页 > 网络编程 > ASP.NET

asp.net core实现在线生成多个文件将多个文件打包为zip返回的操作

时间:2024-11-04 15:13:08|栏目:ASP.NET|点击:

using Aspose.Words;
using Aspose.Words.Saving;
using System.IO.Compression;
namespace ConsoleApp4
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var html = GetHtml();
            using var memoryStream = new MemoryStream();
            using var zipArchive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true);
            var now = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss");
            for (int i = 0; i < 3; i++)
            {
                var docPath = now + "_" + i + ".docx";
                var entry = zipArchive.CreateEntry(docPath, System.IO.Compression.CompressionLevel.Fastest);
                using var entryStream = entry.Open();
                var bytes = Html2Word(html);
                var stream = new MemoryStream(bytes);
                stream.CopyTo(entryStream);
            }
            memoryStream.Position = 0;
            // 创建一个FileStream,并将MemoryStream的内容写入该文件  
            string filePath = now + ".zip";
            using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
            {
                memoryStream.CopyTo(fileStream);
            }
            //如果是asp.net core接口返回,代码如下
            //return File(memoryStream, "application/zip", filePath);
            Console.WriteLine("压缩完成");
            Console.ReadKey();
        }
        /// 
        /// 获取html代码
        /// 
        /// 
        static string GetHtml()
        {
            var htmlData = @"



    
    
    Aspose测试
    



    
姓名 年龄
小明 20
小红 22
小华 18
"; return htmlData; } static byte[] Html2Word(string htmlContent) { //如果有正版授权请写入 //var memoryStream = new MemoryStream(Convert.FromBase64String("")); //var license = new Aspose.Words.License(); //license.SetLicense(memoryStream); var doc = new Aspose.Words.Document(); doc.RemoveAllChildren(); Aspose.Words.DocumentBuilder builder = new DocumentBuilder(doc); builder.InsertHtml(htmlContent); //var now = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss"); //var docPath = now + ".docx"; //doc.Save(docPath); var resultMemoryStream = new MemoryStream(); doc.Save(resultMemoryStream, SaveOptions.CreateSaveOptions(SaveFormat.Docx)); return resultMemoryStream.ToArray(); } } }

安卓手机解压缩出现损坏的问题

方案1 使用SharpCompress

using Aspose.Words;
using Aspose.Words.Saving;
using SharpCompress.Archives.Zip;
using System;
using System.IO;
namespace ZipStu02
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var html = GetHtml();
            var now = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss");
            var archive = ZipArchive.Create();
            for (int i = 0; i < 3; i++)
            {
                var docName = now + "_" + i + ".docx";
                var bytes = Html2Word(html);
                var stream = new MemoryStream(bytes);
                archive.AddEntry(docName, stream);
            }
            string filePath = now + ".zip";
            using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
            {
                archive.SaveTo(fileStream);
            }
            Console.WriteLine("生成成功");
            Console.ReadKey();
        }
    }
}

方案2 使用aspose.zip

//var license = new Aspose.Zip.License();
//license.SetLicense("Aspose.Total.lic");
var html = GetHtml();
//Html2Word(html);
var now = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss");
var archive = new Archive();
for (int i = 0; i < 3; i++)
{
    var docName = now + "_" + i + ".docx";
    var bytes = Html2Word(html);
    var stream = new MemoryStream(bytes);
    archive.CreateEntry(docName, stream);
}
string filePath = now + ".zip";
using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
{
    archive.Save(fileStream);
}
Console.WriteLine("生成成功");
Console.ReadKey();

参考

https://docs.aspose.com/zip/net/

https://github.com/adamhathcock/sharpcompress/wiki/API-Examples

到此这篇关于asp.net core实现在线生成多个文件将多个文件打包为zip返回的文章就介绍到这了,更多相关asp.net core在线生成多个文件内容请搜索科站长以前的文章或继续浏览下面的相关文章希望大家以后多多支持科站长!

上一篇:asp.net core 跨域配置不起作用的原因分析及解决方案

栏    目:ASP.NET

下一篇:.NET 8 高性能跨平台图像处理库 ImageSharp 详解

本文标题:asp.net core实现在线生成多个文件将多个文件打包为zip返回的操作

本文地址:https://www.fushidao.cc/wangluobiancheng/3281.html

广告投放 | 联系我们 | 版权申明

申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:257218569 | 邮箱:257218569@qq.com

Copyright © 2018-2025 科站长 版权所有冀ICP备14023439号