急!在线等待!asp.net上传文件自动解压缩 现在我想实现上传文件(有些是很多文件放在同一个文件中,要把这个文件夹上传到服务器,我想只有把它压缩了才行,但我用到的是没有压缩的文件,所以,我想实现自动解压缩,并把那个“解缩文件”删除。小弟是这样想的,不知各位有没有更好的办法,要是用我这个办法怎样实现),并自动解压缩,上传文件已实现,解压缩还没有实现,请各位高手帮个忙!先谢过了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://blog.csdn.net/21aspnet/archive/2007/06/13/1649810.aspxhttp://blog.csdn.net/zhf7878/archive/2004/02/11/21942.aspx 在服务器上安装WINRAR(相信任何一台服务器都会有的),然后使用WINRAR的命令行方式解压缩文件,在你的程序中新开一个线程(线程知识请参考相关书籍和MSDN),该线程所做的工作就是调用WINRAR命令行文件来解压缩,至于WINRAR命令行使用方法在WINRAR的帮助文档已经有了,请参照WINRAR帮助文档。 //解压缩 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()); }请问一下这个方法的运有的思想是什么呀 建议楼主先别看别人的代码,先自己把过程给画下来,然后根据过程查找相应的程序代码资料,一块一块的做,相信一个晚上就可以搞定。我来讲个故事: 首先,楼主已经知道的信息是:WinRAR这款软件的某个.exe文件可以做到不弹出界面来解压文件,这就是命令行程序。 要让这个.exe文件运行起来该怎么办呢?通常的做法是在“我的电脑”里面双击这个程序,可是现在不行,要让服务器来自动运行,那该怎么办呢?查一查MSDN,.net这么强大的程序设计功能肯定会有启动某个程序的方法,于是楼主可以在MSDN上查到进程和线程的相关知识,也就是Process类,然后楼主在MSDN里面了解到Process类可以运行某个程序,运行起来的方法MSDN里面也提到了,然后楼主就开始写这个程序的第一个版本... 楼主的第一个程序拿记事本做实验,用Process类成功的用自己的程序启动了记事本。然后楼主就照葫芦画瓢来启动winrar的命令行文件,可是问题又来了,那个命令行程序运行起来之后却不知道该解压哪个文件呀?怎么让它知道要解压哪个文件呢? 于是楼主继续钻研MSDN,发现MSDN中提到“运行一个程序可以给该程序启动的时候传参数”,楼主灵光一闪,发现这个就好象快捷方式里面的参数是一样的,于是楼主继续钻研MSDN,MSDN告诉楼主,Process类启动程序是如何如何传参数的,如何使用ProcessStartInfo这个类向程序传参数,于是楼主就动手进行程序第二个版本的开发,加入参数功能,这一次他直接使用上winrar的命令行程序。到这里他又卡住了,该传什么参数呢? 楼主觉得,既然要解压缩文件,那么被解压缩的文件名一定要作为参数传进去,可是好象还差点什么,于是楼主就去网上查资料,发现有人提到winrar的命令行运行方法,原来这些参数在winrar软件的帮助文档里面有啊,于是楼主又去查看winrar的帮助文档,当他打开满是鸟文的帮助文档的时候又被语言关给难住了。没问题,这一切都是小CASE,各种各样的翻译工具在楼主的手上已经散发出了美丽的光芒。 最后,楼主终于通过他自己的力量解决了这一难题,并且体会初级到了编程的最大乐趣,也找到了学习编程的方法。 the_Info = " X " + " 1.rar " + " " + "C:\1";这句怎么用呀,是什么意思 网站用户验证想用加密狗,问,需要做哪些工作 我发布的WebService,调用的时候怎么还要输入用户名密码呢??请问怎么改~~~ 菜鸟系列--又错了 心情不好 散发 问个SQL语句 谢谢及时解答==及时散分 一个简单的问题~~~~~~~~~~~~ GridView里的每行文字太多如何自动隐藏超出的部分 如何连接数据库问题 真心请教,请指点 难道这不是“水晶报表”的问题吗?有关网络打印的问题.200分,up有分 有条sql语句有点难,不知道如何简洁的写出来,所以发出来请教一下大家,大家感兴趣的进来看看,顺祝中秋节快乐!! 如何把这段html代码弄成C#的字符形?
http://blog.csdn.net/zhf7878/archive/2004/02/11/21942.aspx
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());
}
请问一下这个方法的运有的思想是什么呀
首先,楼主已经知道的信息是:WinRAR这款软件的某个.exe文件可以做到不弹出界面来解压文件,这就是命令行程序。
要让这个.exe文件运行起来该怎么办呢?通常的做法是在“我的电脑”里面双击这个程序,可是现在不行,要让服务器来自动运行,那该怎么办呢?查一查MSDN,.net这么强大的程序设计功能肯定会有启动某个程序的方法,于是楼主可以在MSDN上查到进程和线程的相关知识,也就是Process类,然后楼主在MSDN里面了解到Process类可以运行某个程序,运行起来的方法MSDN里面也提到了,然后楼主就开始写这个程序的第一个版本...
楼主的第一个程序拿记事本做实验,用Process类成功的用自己的程序启动了记事本。然后楼主就照葫芦画瓢来启动winrar的命令行文件,可是问题又来了,那个命令行程序运行起来之后却不知道该解压哪个文件呀?怎么让它知道要解压哪个文件呢?
于是楼主继续钻研MSDN,发现MSDN中提到“运行一个程序可以给该程序启动的时候传参数”,楼主灵光一闪,发现这个就好象快捷方式里面的参数是一样的,于是楼主继续钻研MSDN,MSDN告诉楼主,Process类启动程序是如何如何传参数的,如何使用ProcessStartInfo这个类向程序传参数,于是楼主就动手进行程序第二个版本的开发,加入参数功能,这一次他直接使用上winrar的命令行程序。到这里他又卡住了,该传什么参数呢?
楼主觉得,既然要解压缩文件,那么被解压缩的文件名一定要作为参数传进去,可是好象还差点什么,于是楼主就去网上查资料,发现有人提到winrar的命令行运行方法,原来这些参数在winrar软件的帮助文档里面有啊,于是楼主又去查看winrar的帮助文档,当他打开满是鸟文的帮助文档的时候又被语言关给难住了。没问题,这一切都是小CASE,各种各样的翻译工具在楼主的手上已经散发出了美丽的光芒。
最后,楼主终于通过他自己的力量解决了这一难题,并且体会初级到了编程的最大乐趣,也找到了学习编程的方法。