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());
            }

        }

    }

    服务器端目录:

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

  • 相关阅读:
    QQ恢复解散后的群聊或删除后的好友的方法
    微软双屏手机Surface Duo曝新料
    利用Travis CI+GitHub实现持续集成和自动部署
    利用echarts展示旅行足迹
    03_K近邻算法
    02_感知机算法
    《面试官之你说我听》:简明的图解Redis RDB持久化、AOF持久化
    【绝对有收获】看看?必须告诉你为什么要使用MQ消息中间件(图解版)
    推荐收藏系列:一文理解JVM虚拟机(内存、垃圾回收、性能优化)解决面试中遇到问题(图解版)
    利用window.performance.timing进行性能分析
  • 原文地址:https://www.cnblogs.com/levin/p/781681.html
Copyright © 2011-2022 走看看