飘灵儿 发表于 2015-1-16 22:48:35

ASP教程之利用SharpZip紧缩与解紧缩的实战履历

由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况;紧缩起首,在http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx下载源码,找到“ZipConstants.cs”修正

publicstaticstringConvertToString(byte[]data)
{
returnEncoding.GetEncoding("gb2312").GetString(data,0,data.Length);
//returnEncoding.ASCII.GetString(data,0,data.Length);
}

publicstaticbyte[]ConvertToArray(stringstr)
{
returnEncoding.GetEncoding("gb2312").GetBytes(str);
//returnEncoding.ASCII.GetBytes(str);
}



云云便可撑持中文称号了
以下是我写的紧缩与解紧缩的代码:

usingSystem;
usingSystem.Collections;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Web;
usingSystem.Web.SessionState;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.HtmlControls;
usingICSharpCode.SharpZipLib.Zip;



namespaceOA
{
///<summary>
///WebForm1的择要申明。
///</summary>
publicclassWebForm1:System.Web.UI.Page
{
publicstringServerDir;
privatevoidPage_Load(objectsender,System.EventArgse)
{
//在此处安排用户代码以初始化页面
this.ServerDir=Page.MapPath(".");
this.ZipFile("01.txt*02.txt*000.zip");//只是示例,详细的人人本人往完成
this.ZipFile("01.txt*02.txt*001.zip");
this.UnZipFile("000.zip*001.zip");
}


publicstringShortDir(strings)
{
//将文件的相对路径转为绝对路径
stringd=s.Replace(ServerDir,"");
returnd;
}



//紧缩文件p为客户端传返来的文件列表:文件名+紧缩包的称号
publicvoidZipFile(stringp)
{
string[]tmp=p.Split(newchar[]{*});//分别文件列表
if(tmp!="")//紧缩包称号不为空
{
ZipOutputStreamu=newZipOutputStream(File.Create(ServerDir+tmp));//新建紧缩文件流“ZipOutputStream”
for(inti=0;i<tmp.Length-1;i++)
{
if(tmp!="")//分别出来的文件名不为空
{
this.AddZipEntry(tmp,u,outu);//向紧缩文件流到场内容
}
}
u.Finish();//停止紧缩
u.Close();
}
}



//增加紧缩项目:p为需紧缩的文件或文件夹;u为现有的源ZipOutputStream;outj为已增加“ZipEntry”的“ZipOutputStream”
publicvoidAddZipEntry(stringp,ZipOutputStreamu,outZipOutputStreamj)
{
strings=ServerDir+p;

if(Directory.Exists(s))//文件夹的处置
{
DirectoryInfodi=newDirectoryInfo(s);

//***********以下内容是订正后增加的***********

if(di.GetDirectories().Length<=0)//没有子目次
{
ZipEntryz=newZipEntry(p+"");//开端“”用于文件夹的标志
u.PutNextEntry(z);
}

//***************以上内容是订正后增加的***************


foreach(DirectoryInfotemindi.GetDirectories())//猎取子目次
{
ZipEntryz=newZipEntry(this.ShortDir(tem.FullName)+"");//开端“”用于文件夹的标志
u.PutNextEntry(z);//此句不成少,不然空目次不会被增加
s=this.ShortDir(tem.FullName);
this.AddZipEntry(s,u,outu);//递回
}
foreach(FileInfotempindi.GetFiles())//猎取此目次的文件
{
s=this.ShortDir(temp.FullName);
this.AddZipEntry(s,u,outu);//递回
}
}
elseif(File.Exists(s))//文件的处置
{
</p>无法实现跨操作系统的应用。当然这也是微软的理由之一,只有这样才能发挥ASP最佳的能力。可是我却认为正是Windows限制了ASP,ASP的概念本就是为一个能让系统运行于一个大的多样化环境而设计的;

再见西城 发表于 2015-1-19 16:42:10

以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。

简单生活 发表于 2015-1-24 14:50:48

我想问如何掌握学习节奏(先学什么再学什么)最好详细点?

海妖 发表于 2015-2-7 10:21:59

以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。

乐观 发表于 2015-2-21 18:27:09

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:

冷月葬花魂 发表于 2015-3-6 20:54:01

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

第二个灵魂 发表于 2015-3-13 08:17:46

最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。

老尸 发表于 2015-3-20 17:26:46

不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍
页: [1]
查看完整版本: ASP教程之利用SharpZip紧缩与解紧缩的实战履历