仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 702|回复: 9
打印 上一主题 下一主题

[学习教程] ASP教程之旧事体系里避免发生渣滓图片的一种办法...

[复制链接]
精灵巫婆 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 23:34:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
asp,jsp,php是web开发的三大技术,asp简单易用且有microsoft做靠山,jsp功能强大是因为有java支持,php则开源跨平台.在国内,asp应用范围最广,jsp发展势头最猛,php则处于劣势.这可能与公司的支持以及技术的培训有关.旧事体系如今的旧事体系里越多地撑持在线上传拔出图片,以完成在对照好的效果。但是成绩也随之而来了,有的图片传上往后,发明这个图片不合错误,那只能在编纂器里把它删失落,或是,在增加地程中体系呈现成绩,而招致渣滓图片的发生。为了避免在这过程当中呈现渣滓图片和附件,很多人多研讨了很多的办法,如动网论坛里,对上传的每个文件,在数据库里都有响应的一个纪录,如许要占用一个表来寄存,而且假如在增加数据到数据库里时体系呈现非常,也一样没法制止这些渣滓的发生。经由我的一些理论,研讨出我的办法,如今奉献出来,供人人匡正。
我的办法流程是如许的:当文章的增加者登录到体系内里后,由体系给它创立一个一时的事情文件夹,如“editor”这个用户的ID是5那我创建一个temp5的一时事情目次,当他增加文章的时分,上传的图片和别的附件其实不存进到真正要显现寄存的目次,而是存在这个一时的事情目次内里。同时为了便利办理,我倡议给每条旧事建一个目次来寄存这些图片,当文章提交的时分,由体系剖析内里的图片地点,把文章内里有的图片转移到这些对应的目次内里往。当旧事或文章修改的时分,就先把这个文件夹上面的一切图片转移到进进的时分的一时事情目次内里,同时对文章内里的图片路径举行交换,保留的时分也是和增加的时分实行统一个历程。当文章删除的时分,也绝对应地把这个目次删失落,这就能够包管了在增加、修正、删除的过程当中没有渣滓图片的发生。当用户登出的时分,体系能够将其所对应的事情目次删除,如许就能够完全地作到没有渣滓的发生。
看到下面这些笔墨形貌大概很多多少人要头晕了,那看一下详细的完成历程吧(由于我对ASP对照熟习,以是我用ASP来完成它了,用别的的平台也是能够完成的)。起首让我先引进我本人写的一个类,用来剖析和转移图片的,具体的申明请看我的另外一篇文章:用asp主动剖析网页中的图片地点,并将其保留到当地服务器(http://www.csdn.net/develop/read_article.asp?id=15585)
classblacksmith
TheClass"blacksmith"isCreatedbyLinzhangChen
Itcoulduseforcopyimagesformotherserverwhichcontainintheweb
dimsize,baseurl,basefilename,tofolder,servername,processstr,firstoldimg,firstnewimg
publicFunctionsaveimage(from,tofile)
Dimgeturl,objStream,imgs,s
Ifsize=""Then
size=0
EndIf
geturl=Trim(from)
imgs=getHTTPPage(geturl)
s=size*512
IfLen(imgs)>sThen
SetobjStream=CreateObject("ADODB.Stream")
objStream.Type=1
objStream.Open
objStream.Writeimgs
objStream.SaveToFiletofile,2
objStream.Close
SetobjStream=Nothing
saveimage=True
Else
saveimage=False
EndIf
EndFunction

privateFunctiongetHTTPPage(url)
OnErrorResumeNext
Dimhttp
Sethttp=CreateObject("MSXML2.XMLHTTP")
http.Open"GET",url,False
http.send
Ifhttp.readyState4Then
ExitFunction
EndIf
getHTTPPage=http.responseBody
Sethttp=Nothing
IfErr.Number0ThenErr.Clear
EndFunction

privateFunctiongetimgs(str)
getimgs=""
SetobjRegExp1=NewRegExp
objRegExp1.IgnoreCase=True
objRegExp1.Global=True
objRegExp1.Pattern="http://.+?"""
Setmm=objRegExp1.Execute(str)
ForEachMatch1Inmm
getimgs=getimgs&"||"&Left(Match1.Value,Len(Match1.Value)-1)
Next
EndFunction

Functionstr2img()
Dimservername,objRegExp,strs,Matches,RetStr,arrimg,newimg,i,fname,states,arrnew,arrall
ifbaseurl""then
IfRight(baseurl,1)"/"Then
baseurl=baseurl&"/"
EndIf
endif
ifright(tofolder,1)""then
tofolder=tofolder&""
endif
SetobjRegExp=NewRegExp
objRegExp.IgnoreCase=True
objRegExp.Global=True
objRegExp.Pattern="<img.+?>"
strs=Trim(processstr)
SetMatches=objRegExp.Execute(strs)
ForEachMatchInMatches
RetStr=RetStr&getimgs(Match.Value)
Next
arrimg=Split(RetStr,"||")
allimg=""
newimg=""
Fori=1ToUBound(arrimg)
Ifarrimg(i)""AndInStr(allimg,arrimg(i))<1Then
fname1=baseurl&CStr(basefilename&i&Mid(arrimg(i),InStrRev(arrimg(i),".")))
fname=tofolder&CStr(basefilename&i&Mid(arrimg(i),InStrRev(arrimg(i),".")))
states=saveimage(arrimg(i),fname)
Ifstates=TrueThen
allimg=allimg&"||"&arrimg(i)
newimg=newimg&"||"&fname1
EndIf
EndIf
Next
arrnew=Split(newimg,"||")
arrall=Split(allimg,"||")
Fori=1ToUBound(arrnew)
ifi=1then
firstoldimg=arrall(1)
firstnewimg=arrnew(1)
endif
strs=Replace(strs,arrall(i),arrnew(i))
Next
str2img=strs
EndFunction
endclass
第一步用户登录的时分:因为有一个事情区,以是最好不要让多个用户用统一个帐号否则到时分有人登出的时分,将会形成别的人的事情丧失,这里最次要处置的是帐户登录的时分要对这个帐号锁定不同意反复登录(次要由FSO和数据库来完成,我就未几说了)。
在处置文件上传的时分,能够用稻喷鼻老农的无组件上传,把图片传到事情区中。而且把图片代码前往到编纂器中,当提交今后,将由以下代码来处置这些图片,我这里是依据旧事或文章的ID来创立文件夹的:
sql="selecttop1formnewswhereidisnull"
setrs=server.createobject("adodb.recordset")
rs.opensql,conn,1,3
rs.addnew
rs("userid")=session("myid")由于是新加的,以是先加上一条来获得ID
rs.update
newID=rs("newsid")年夜部分情形下,如许能够获得ID的,可</p>想法是和程序员的想法不一样的.至于为什么.大家去想一想.跟心理学有关的
admin 该用户已被删除
沙发
发表于 2015-1-18 16:48:15 | 只看该作者
我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。
小妖女 该用户已被删除
板凳
发表于 2015-1-22 13:30:51 | 只看该作者
完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。
莫相离 该用户已被删除
地板
发表于 2015-1-23 19:30:28 | 只看该作者
兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的
深爱那片海 该用户已被删除
5#
发表于 2015-1-31 19:35:35 | 只看该作者
我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。
透明 该用户已被删除
6#
发表于 2015-2-6 21:29:24 | 只看该作者
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
谁可相欹 该用户已被删除
7#
发表于 2015-2-18 19:48:33 | 只看该作者
不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍
分手快乐 该用户已被删除
8#
发表于 2015-3-6 09:54:55 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
兰色精灵 该用户已被删除
9#
发表于 2015-3-12 23:36:12 | 只看该作者
不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍
不帅 该用户已被删除
10#
发表于 2015-3-20 05:19:38 | 只看该作者
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 05:28

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表