zoukankan      html  css  js  c++  java
  • asp.net利用RAR实现文件压缩解压缩(转)

    如果服务器上安装了RAR程序,那么asp.net可以调用RAR实现文件压缩与解压缩。

    不过要注意的是,由于Web程序不能直接调用客户端的程序(除非用ActiveX,ActiveX几乎被废弃),所以如果要想实现让用户把本地文件用网页解压缩只有把文件上传到服务器上再调用服务器上的RAR压缩,同理要解压缩本地的RAR文件可以把文件上传到服务器解压再拿回来。

    本文讲怎么在服务器端的目录解压缩文件!

    效果图:

     前台代码:
    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        
    <title>服务器端解压缩  清清月儿 http://blog.csdn.net/21aspnet/</title>
    </head>
    <body>
        
    <form id="form1" runat="server">
        
    <div>
            
    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="压缩" />
            
    <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="解压缩" /></div>
        
    </form>
    </body>
    </html>

    后台代码:

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.IO;
    using System.Runtime.InteropServices;
    using Microsoft.Win32;
    using System.Diagnostics;
    public partial class _Default : System.Web.UI.Page 
    {
        
    protected void Page_Load(object sender, EventArgs e)
        
    {
            
    //清清月儿 http://blog.csdn.net/21aspnet/
        }

        
    protected void Button1_Click(object sender, EventArgs e)
        
    {
            
    //压缩
            String the_rar;
            RegistryKey the_Reg;
            Object the_Obj;
            String the_Info;
            ProcessStartInfo the_StartInfo;
            Process the_Process;
            
    try
            
    {
                the_Reg 
    = Registry.ClassesRoot.OpenSubKey("Applications\WinRAR.exe\Shell\Open\Command");
                the_Obj 
    = the_Reg.GetValue("");
                the_rar 
    = the_Obj.ToString();
                the_Reg.Close();
                the_rar 
    = the_rar.Substring(1, the_rar.Length - 7);
                the_Info 
    = " a    " + " 1.rar " + "  " + "C:\1\1.txt";
                the_StartInfo 
    = new ProcessStartInfo();
                the_StartInfo.FileName 
    = the_rar;
                the_StartInfo.Arguments 
    = the_Info;
                the_StartInfo.WindowStyle 
    = ProcessWindowStyle.Hidden;
                the_StartInfo.WorkingDirectory 
    = "C:\1";//获取或设置要启动的进程的初始目录。
                the_Process = new Process();
                the_Process.StartInfo 
    = the_StartInfo;
                the_Process.Start();
                Response.Write(
    "压缩成功");
            }

            
    catch (Exception ex)
            
    {
                Response.Write(ex.ToString());
            }

        }

        
    protected void Button2_Click(object sender, EventArgs e)
        
    {
            
    //解压缩
            String the_rar;
            RegistryKey the_Reg;
            Object the_Obj;
            String the_Info;
            ProcessStartInfo the_StartInfo;
            Process the_Process;
            
    try
            
    {
                the_Reg 
    = Registry.ClassesRoot.OpenSubKey("Applications\WinRar.exe\Shell\Open\Command");
                the_Obj 
    = the_Reg.GetValue("");
                the_rar 
    = the_Obj.ToString();
                the_Reg.Close();
                the_rar 
    = the_rar.Substring(1, the_rar.Length - 7);
                the_Info 
    = " X " + " 1.rar " + " " + "C:\1";
                the_StartInfo 
    = new ProcessStartInfo();
                the_StartInfo.FileName 
    = the_rar;
                the_StartInfo.Arguments 
    = the_Info;
                the_StartInfo.WindowStyle 
    = ProcessWindowStyle.Hidden;
                the_Process 
    = new Process();
                the_Process.StartInfo 
    = the_StartInfo;
                the_Process.Start();
                Response.Write(
    "解压缩成功");
            }

            
    catch (Exception ex)
            
    {
                Response.Write(ex.ToString());
            }

        }

    }

    服务器端目录:

    客户端解压缩的变通方法:

  • 相关阅读:
    SQL Server 2005中的分区表(一):什么是分区表?为什么要用分区表?如何创建分区表?
    SQL Server 分区表
    SQL Server表分区
    Red Gate系列之一 SQL Compare 10.4.8.87 Edition 数据库比较工具 完全破解+使用教程
    C# WinForm开发系列
    C# WinForm开发系列
    富文本编辑器 CKeditor 配置使用
    C# ListView用法详解
    C# WinForm给Button或其它控件添加快捷键响应
    WebApi安全性 使用TOKEN+签名验证
  • 原文地址:https://www.cnblogs.com/levin/p/781681.html
Copyright © 2011-2022 走看看