RAR プログラムがサーバーにインストールされている場合、asp.net は RAR を呼び出してファイルを圧縮および解凍できます。
ただし、Web プログラムはクライアント プログラムを直接呼び出すことができないため (ActiveX が使用されない限り、ActiveX はほとんど放棄されています)、ユーザーが Web ページを使用してローカル ファイルを解凍できるようにしたい場合、ユーザーはファイルを同様に、ローカルの 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="サーバー">
<title>サーバー側解凍 Qingqing Yue'er http://blog.csdn.net/21aspnet/</title >
</head>
<本文>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Compression" />
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Unzip" /></div>
</form>
</body>
</html>
バックエンド コード:
システムを使用します。
System.Data を使用します。
System.Configuration を使用します。
System.Web を使用します。
System.Web.Security を使用します。
System.Web.UI を使用します。
System.Web.UI.WebControls を使用します。
System.Web.UI.WebControls.WebParts を使用します。
System.Web.UI.HtmlControls を使用します。
System.IO を使用します。
System.Runtime.InteropServices を使用します。
Microsoft.Win32 を使用します。
System.Diagnostics を使用します。
パブリック部分クラス _Default : System.Web.UI.Page
...{
protected void Page_Load(オブジェクト送信者, EventArgs e)
...{
//Qingqingyueerhttp://blog.csdn.net/21aspnet/
}
protected void Button1_Click(オブジェクト送信者、EventArgs e)
...{
//圧縮
文字列 the_rar;
レジストリキー the_Reg;
オブジェクト the_Obj;
the_Info を文字列化します。
ProcessStartInfo the_StartInfo;
the_Process を処理します。
試す
...{
the_Reg = Registry.ClassesRoot.OpenSubKey("ApplicationsWinRAR.exeShellOpenCommand");
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:11.txt";
the_StartInfo = 新しい ProcessStartInfo();
the_StartInfo.FileName = the_rar;
the_StartInfo.Arguments = the_Info;
the_StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
the_StartInfo.WorkingDirectory = "C:1";//開始するプロセスの初期ディレクトリを取得または設定します。
the_Process = 新しいプロセス();
the_Process.StartInfo = the_StartInfo;
the_Process.Start();
Response.Write("圧縮が成功しました");
}
catch (例外例)
...{
Response.Write(ex.ToString());
}
}
protected void Button2_Click(オブジェクト送信者、EventArgs e)
...{
//解凍する
文字列 the_rar;
レジストリキー the_Reg;
オブジェクト the_Obj;
the_Info を文字列化します。
ProcessStartInfo the_StartInfo;
the_Process を処理します。
試す
...{
the_Reg = Registry.ClassesRoot.OpenSubKey("ApplicationsWinRar.exeShellOpenCommand");
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 = 新しい ProcessStartInfo();
the_StartInfo.FileName = the_rar;
the_StartInfo.Arguments = the_Info;
the_StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
the_Process = 新しいプロセス();
the_Process.StartInfo = the_StartInfo;
the_Process.Start();
Response.Write("解凍成功");
}
catch (例外例)
...{
Response.Write(ex.ToString());
}
}
}
http://blog.csdn.net/21aspnet/archive/2007/06/13/1649810.aspx