Se o programa RAR estiver instalado no servidor, o asp.net poderá chamar o RAR para compactar e descompactar arquivos.
No entanto, deve-se notar que, como os programas da Web não podem chamar diretamente os programas clientes (a menos que o ActiveX seja usado, o ActiveX está quase abandonado), se você quiser permitir que os usuários descompactem arquivos locais usando páginas da Web, eles só poderão fazer upload dos arquivos para o servidor e, em seguida, ativar a compactação RAR do servidor. Da mesma forma, se desejar descompactar um arquivo RAR local, você pode enviar o arquivo para o servidor para descompactá-lo e recuperá-lo.
Este artigo explica como descompactar arquivos no diretório do servidor!
Código de front-end:
<%...@ 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="servidor">
<title>Descompressão do lado do servidor Qingqing Yue'er http://blog.csdn.net/21aspnet/</title >
</head>
<corpo>
<form id="form1" runat="servidor">
<div>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Compressão" />
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Descompactar" /></div>
</form>
</body>
</html>
Código backend:
usando System;
usando System.Data;
usando System.Configuration;
usando System.Web;
usando System.Web.Security;
usando System.Web.UI;
usando System.Web.UI.WebControls;
usando System.Web.UI.WebControls.WebParts;
usando System.Web.UI.HtmlControls;
usando System.IO;
usando System.Runtime.InteropServices;
usando Microsoft.Win32;
usando System.Diagnostics;
classe parcial pública _Default: System.Web.UI.Page
...{
protegido void Page_Load (remetente do objeto, EventArgs e)
...{
//Qingqingyueer http://blog.csdn.net/21aspnet/
}
protegido vazio Button1_Click (objeto remetente, EventArgs e)
...{
//compressão
String the_rar;
Chave de registro the_Reg;
Objeto the_Obj;
String the_Info;
ProcessStartInfo the_StartInfo;
Processar the_Process;
tentar
...{
the_Reg = Registry.ClassesRoot.OpenSubKey("AplicativosWinRAR.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 = new ProcessStartInfo();
the_StartInfo.FileName = the_rar;
the_StartInfo.Arguments = the_Info;
the_StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
the_StartInfo.WorkingDirectory = "C:1";//Obtém ou define o diretório inicial do processo a ser iniciado.
the_Process = novo Processo();
the_Process.StartInfo = the_StartInfo;
the_Process.Start();
Response.Write("Compactação bem sucedida");
}
pegar (exceção ex)
...{
Response.Write(ex.ToString());
}
}
protegido void Button2_Click (objeto remetente, EventArgs e)
...{
//descomprimir
String the_rar;
Chave de registro the_Reg;
Objeto the_Obj;
String the_Info;
ProcessStartInfo the_StartInfo;
Processar the_Process;
tentar
...{
the_Reg = Registry.ClassesRoot.OpenSubKey("AplicativosWinRar.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 = new ProcessStartInfo();
the_StartInfo.FileName = the_rar;
the_StartInfo.Arguments = the_Info;
the_StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
the_Process = novo Processo();
the_Process.StartInfo = the_StartInfo;
the_Process.Start();
Response.Write("Descompressão bem sucedida");
}
pegar (exceção ex)
...{
Response.Write(ex.ToString());
}
}
}
http://blog.csdn.net/21aspnet/archive/2007/06/13/1649810.aspx