`
hsys
  • 浏览: 290790 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ASP.NET 在线压缩与解压文件

阅读更多
压缩与解压函数
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.IO.Compression;

/// <summary>
///ComPress 的摘要说明
/// </summary>
public class ComPress
{
	public ComPress()
	{
		
	}

    /// <summary>
    /// 压缩文件
    /// </summary>
    /// <param name="sourceFile">原文件</param>
    /// <param name="destinationFile">目标文件</param>
    public static void ComPressFile(string sourceFile, string destinationFile)
    {
        if (!File.Exists(sourceFile))
        {
            throw new FileNotFoundException();
        }
        using (FileStream sourceStream = new FileStream(sourceFile, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
        {
            byte[] buffer = new byte[sourceStream.Length];
            int checkCounter = sourceStream.Read(buffer, 0, buffer.Length);
            if (checkCounter != buffer.Length)
            {
                throw new ApplicationException();
            }
            using (FileStream destinationStream = new FileStream(destinationFile, FileMode.OpenOrCreate, FileAccess.Write))
            {
                using (GZipStream compressStream = new GZipStream(destinationStream, CompressionMode.Compress, true))
                {
                    compressStream.Write(buffer, 0, buffer.Length);
                }
            }
        }
    }

    /// <summary>
    /// 解缩文件
    /// </summary>
    /// <param name="sourceFile">原文件</param>
    /// <param name="destinationFile">目标文件</param>
    public static void DeCompress(string sourceFile, string destinationFile)
    {
        if (!File.Exists(sourceFile))
        {
            throw new FileNotFoundException();
        }
        using (FileStream sourceStream = new FileStream(sourceFile, FileMode.Open))
        {
            byte[] quartetBuffer = new byte[4];
            int position = (int)sourceStream.Length - 4;
            sourceStream.Position = position;
            sourceStream.Read(quartetBuffer, 0, 4);
            sourceStream.Position = 0;
            int checkLength = BitConverter.ToInt32(quartetBuffer, 0);
            byte[] buffer = new byte[checkLength + 100];
            using (GZipStream deCompressedStream = new GZipStream(sourceStream, CompressionMode.Decompress, true))
            {
                int total = 0;
                for (int offset = 0; ; )
                {
                    int bytesRead = deCompressedStream.Read(buffer, offset, 100);
                    if (bytesRead == 0)
                        break;
                    offset += bytesRead;
                    total += bytesRead;
                }
                using (FileStream destinationStream = new FileStream(destinationFile, FileMode.Create))
                {
                    destinationStream.Write(buffer, 0, total);
                    destinationStream.Flush();
                }
            }
        }
    }

}



页面代码
<form id="form1" runat="server">
    <div>
    要压缩文件:<asp:DropDownList ID="ddlFile" runat="server"></asp:DropDownList>
    <asp:Button ID="btnCompress" runat="server" onclick="btnCompress_Click" Text="压缩" />
    <asp:Button ID="btnDeCompress" runat="server" o Text="解压" 
            onclick="btnDeCompress_Click" />
    </div>
    </form>


后台代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

public partial class Compress : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string path = Server.MapPath(".");
            DirectoryInfo dir = new DirectoryInfo(path);
            foreach (FileInfo fileName in dir.GetFiles())
            {
                ddlFile.Items.Add(new ListItem(fileName.Name, fileName.Name));
            }
        }
    }
    protected void btnCompress_Click(object sender, EventArgs e)
    {
        try
        {
            ComPress.ComPressFile(Server.MapPath("./") + ddlFile.Text, Server.MapPath("./")+"asd.rar");
            Page.ClientScript.RegisterStartupScript(Page.GetType(), "mess", "<script language='javascript' defer>alert('压缩成功');</script>");
        }
        catch
        {
            Page.ClientScript.RegisterStartupScript(Page.GetType(), "mess", "<script language='javascript' defer>alert('压缩失败');</script>");
        }
    }
    protected void btnDeCompress_Click(object sender, EventArgs e)
    {
        try
        {
            ComPress.DeCompress(Server.MapPath("./") + ddlFile.Text, Server.MapPath("./") + "3.txt");
            Page.ClientScript.RegisterStartupScript(Page.GetType(), "mess", "<script language='javascript' defer>alert('解压成功');</script>");
        }
        catch
        {
            Page.ClientScript.RegisterStartupScript(Page.GetType(), "mess", "<script language='javascript' defer>alert('解压失败');</script>");
        }
    }
}



本程序不足之处就是不压缩文件中的文件名不能自动的为原来的文件名。
分享到:
评论

相关推荐

    Asp.net在线压缩解压简单实例

    【Asp.net在线压缩解压简单实例】是一个实用的示例项目,展示了如何在ASP.NET环境中处理文件的压缩和解压操作。这个实例的核心在于它能够动态地对服务器上的文件进行压缩或解压缩,这对于数据传输和存储优化具有重要...

    ASP.NET在线压缩和解压缩

    此标题指出了一个在ASP.NET环境下实现的文件压缩与解压缩功能。ASP.NET是微软开发的一种服务器端脚本环境,它允许程序员使用C#、VB.NET等语言创建动态网页。在线压缩和解压缩是指在Web应用中实时处理文件压缩和解压...

    asp.net在线解压文件

    在ASP.NET环境中,开发人员经常需要处理文件上传和下载,其中就包括了文件的压缩与解压缩。本篇文章将深入探讨如何使用`FileStream`类和`GZipStream`类在线解压文件,以便在Web应用中实现高效的数据传输。 首先,`...

    asp.net调用RAR实现文件压缩与解压缩图文代码

    如果服务器上安装了RAR程序,那么asp.net可以调用RAR实现文件压缩与解压缩。 不过要注意的是,由于Web程序不能直接调用客户端的程序(除非用ActiveX,ActiveX几乎被废弃),所以如果要想实现让用户把本地文件用网页...

    asp.net在线压缩文件

    网络传输文件过程中,如果文件过大将会影响文件传送的效果和速度,如果将文件压缩之后再上传,不但可以...本实例通过asp.net web应用程序中实现了文件的在线压缩功能。 本实例主要使用了FileStream类和GZipStream类。

    Asp.net 压缩和解压文件

    asp.net 压缩解压文件,调用该方法,直接传入路径参数即可,非常好用,本人推荐哦

    基于ASP.NET2.0的在线压缩-解压源程序代码

    在本文中,我们将深入探讨如何使用ASP.NET 2.0框架来实现在线的文件压缩和解压功能。ASP.NET 2.0是Microsoft .NET Framework的一部分,它为Web应用程序开发提供了一个强大的平台。通过结合C#编程语言和Visual Studio...

    asp.net C# 压缩下载多文件 带实例

    在ASP.NET平台中,使用C#进行文件压缩和下载是一项常见的任务,特别是在处理大量数据或者提供批量下载服务时。这个实例主要关注如何将多个文件压缩为一个文件,并提供下载功能。接下来,我们将深入探讨实现这一功能...

    ASP.NET 中的压缩和解压

    在ASP.NET中,为了实现文件的压缩和解压缩,我们可以利用.NET框架提供的`DeflateStream`和`GZipStream`类。这两个类位于`System.IO.Compression`命名空间下,它们分别对应DEFLATE和gzip两种不同的压缩算法,这两种...

    asp.net 解压缩文件

    在处理文件压缩和解压缩方面,ASP.NET 提供了一些内置支持,但默认情况下并不包含对RAR格式的支持。不过,由于RAR是一种广泛使用的压缩格式,开发者可以通过调用外部RAR程序或者第三方库来实现RAR文件的处理。 在...

    Asp.net2.0实现压缩/解压示例源码

    在Asp.NET 2.0框架中,开发人员经常需要处理文件的压缩和解压缩操作,这在数据传输、存储优化或提供下载服务时尤为重要。本示例源码旨在演示如何在ASP.NET环境中实现这一功能,使开发者能够方便地对文件和目录进行...

    asp.net 在线解压rar

    这个ASP.NET程序通过调用系统级别的RAR解压缩工具来实现这一功能,极大地提升了用户体验,尤其是在处理大文件或者需要快速访问解压内容时。 首先,我们来详细了解一下如何在ASP.NET中实现在线解压RAR的功能。ASP...

    【ASP.NET编程知识】asp.net输出重写压缩页面文件实例代码.docx

    本文还提供了其他有关于ASP.NET压缩和解压缩的实例代码和技术,如C#实现GZip压缩和解压缩、asp.net调用winrar实现压缩解压缩、asp.net在线备份、压缩和修复Access数据库、asp.net图像超全文可编辑word文档页眉与背景...

    Asp.net2.0在线压缩_解压示例源码

    在这个“Asp.net2.0在线压缩_解压示例源码”中,我们可以看到如何在ASP.NET环境中实现文件的在线压缩和解压功能。这个示例提供了对用户上传的文件进行压缩或解压缩的功能,这对于处理大量数据的Web应用尤其有用,...

    ASP.NET利用RAR实现文件压缩解压缩

    在本文中,我们将探讨如何在 ASP.NET 中利用 WinRAR 工具进行文件的压缩和解压缩操作。 首先,WinRAR 是一款流行的压缩软件,提供了命令行界面供用户执行各种压缩和解压缩任务。在 ASP.NET 应用中,可以借助系统...

    ASP.NET MVC 文件管理功能Demo

    ASP.NET MVC 文件管理功能Demo是基于ASP.NET MVC框架和Easy-UI前端库开发的一个实践项目,旨在实现对本地文件系统的全面操作。这个Demo涵盖了多种文件操作功能,包括上传、下载、复制、粘贴、压缩以及重命名等,使得...

    asp.net 压缩解压控件

    在实际开发中,使用ASP.NET压缩解压控件可以极大地简化文件处理逻辑,使开发者能够专注于应用程序的核心功能。通过熟练掌握这种控件的使用,可以有效地提高开发效率并改善用户界面。因此,对于从事ASP.NET Web应用...

    jquery flash asp.net 压缩图片

    本话题主要涉及“jQuery”、“Flash”和“ASP.NET”这三个技术如何协同实现图片的批量上传和压缩功能。以下是关于这些技术及其应用的详细说明: **jQuery** jQuery是一个广泛使用的JavaScript库,它简化了HTML文档...

    基于ASP.NET企业在线记账平台源码.zip

    【压缩包子文件的文件名称列表】"MF00259-ASP.NET企业在线记账平台源码" 提示我们,压缩包内包含的是整个项目的源代码。这个文件名可能对应的是项目的一个版本号或特定标识,帮助识别不同的开发阶段或修订版本。 在...

    【ASP.NET编程知识】asp.NET中实现文件的压缩和解压(3种方式).docx

    ASP.NET 中实现文件的压缩和解压(3 种方式) ASP.NET 中实现文件的压缩和解压是许多开发者常见的需求,今天我们将讨论三种实现方式:使用 System.IO.Packaging、使用第三方类库、使用 System.IO.Compression 命名...

Global site tag (gtag.js) - Google Analytics