Если программа RAR установлена на сервере, asp.net может вызывать RAR для сжатия и распаковки файлов.
Однако следует отметить, что поскольку веб-программы не могут напрямую вызывать клиентские программы (если не используется 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="сервер">
<title>Распаковка на стороне сервера Цинцин Юээр http://blog.csdn.net/21aspnet/</title >
</голова>
<тело>
<form id="form1" runat="server">
<дел>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Сжатие" />
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Unzip" /></div>
</форма>
</тело>
</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)
...{
//Цинцинъюэрhttp://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("Сжатие выполнено успешно");
}
поймать (Исключение ex)
...{
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("Распаковка прошла успешно");
}
поймать (Исключение ex)
...{
Response.Write(ex.ToString());
}
}
}
http://blog.csdn.net/21aspnet/archive/2007/06/13/1649810.aspx