仓酷云

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

[学习教程] ASP网站制作之ASP文件上逼真功 第二重(招势图加内功...

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

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

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

x
asp可以使用微软的activeX使得网页功能无比强大,不过安全性也较差,而且是基于的windows服务器,所以性能稳定性也一般上传第二重:文本信息与图片文件同时提交保留到数据库
图片文件也可保留到磁盘文件

  这个成绩已不是甚么奇怪成绩了,网上也有年夜把的教程,但年夜多半是授人以鱼,而不授人以渔,经由辛劳的材料搜集,思索,调试,收拾,我基础上已把这个成绩从道理上弄分明了,如今依据我本人的了解,在典范程序的基本上,加以注释,但愿能对部分网友(比我还菜的:-))有所匡助。

  请诸位年夜虾能对个中的不正或不良这处予以斧正。

  程序中stream工具的用法上参考了“化境HTTP上传程序Version2.0”在代码,在此对稻喷鼻老农和梁无惧暗示衷心的感激和由衷的敬意。

  前次讲了单个图片文件保留到数据库,此次讲一下文本信息与图片文件同时提交保留到数据库,图片文件也可保留到磁盘文件。

MultiInputOrImageToData.asp
<%@Language=VBScript%>
<%optionexplicit%>

<%
 把一段二进制数据写进到一个文件
 subsaveBin2File(srmSource,posB,posLen,strPath)
  dimsrmObj
  setsrmObj=server.CreateObject("adodb.stream")
  srmObj.Type=1
  srmObj.Mode=3
  srmObj.Open
   
  srmSource.Position=posB-1
  srmSource.CopyTosrmObj,posLen
  srmObj.Position=0
  srmObj.SaveToFilestrPath,2   假如该文件已存在,无前提掩盖
  srmObj.Close
  setsrmObj=nothing
 endsub

 二进制数据转换为字符串,包含汉字
 functiongetTextfromBin(srmSource,posBegin,posLen)
  dimsrmObj,strData
  setsrmObj=server.CreateObject("adodb.stream")
  srmObj.Type=1
  srmObj.Mode=3
  srmObj.Open

  srmSource.position=posBegin-1   地位计数首数纷歧样,这个工具是对0入手下手的
  srmSource.CopyTosrmObj,posLen
  srmObj.Position=0
  srmObj.Type=2
  srmObj.Charset="gb2312"
  strData=srmObj.ReadText

  srmObj.Close
  setsrmObj=nothing
   
  getTextfromBin=strData
 endfunction
    
 双字节字符串转换成单字节字符串
 functiongetSBfromDB(bytString)
  dimbin,i
  bin=""
  fori=1tolen(bytString)
   bin=bin&chrb(asc(mid(bytString,i,1)))
  next
  getSBfromDB=bin
 endfunction

 单字节字符串转换成双字节字符串
 functiongetDBfromSB(bitString)
  dimstr,i
  str=""
  fori=1tolenb(bitString)
   str=str&chr(ascb(midb(bitString,i,1)))
  next
  getDBfromSB=str
 endfunction
 
 从一个完全路径中析出文件称号
 functiongetFileNamefromPath(strPath)
  getFileNamefromPath=mid(strPath,instrrev(strPath,"")+1)
 endfunction

 判别函数
 functioniif(cond,expr1,expr2)
  ifcondthen
   iif=expr1
  else
   iif=expr2
  endif
 endfunction
 
 界说数据库毗连字符串
 dimcnstr
 cnstr="driver={MicrosoftAccessDriver(*.mdb)};dbq="&server.MapPath("./upload.mdb")
%>

<HTML>
 <HEAD>
  <title>多个表单域或图象同步保留到数据库</title>
  <metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
 </HEAD>
 <body>
<p>导航菜单:<b>上传图片</b> <ahref="ShowImageListFromData2.asp">显现图片</a><hr></p>
 
<%
 ifrequest.ServerVariables("REQUEST_METHOD")="POST"then

  dimsCome,binData
  dimposB,posE,posSB,posSE
  dimbinCrlf,binSub
  dimstrTitle,strFileName,strContentType,posFileBegin,posFileLen,aryFileInfo
  dimi,j
  dimdicData
  dimstrName,strValue
  
  binCrlf=getSBfromDB(vbcrlf)  界说一个单字节的回车换行符
  binSub=getSBfromDB("--")    界说一个单字节的“--”字符串
  
  setsCome=server.CreateObject("adodb.stream")
  sCome.Type=1  指定前往数据范例adTypeBinary=1,adTypeText=2
  sCome.Mode=3  指定翻开形式adModeRead=1,adModeWrite=2,adModeReadWrite=3
  sCome.Open
  sCome.Writerequest.BinaryRead(request.TotalBytes)
  
  sCome.Position=0
  binData=sCome.Read
  response.BinaryWritebinData    调试用:显现提交的一切数据
  response.Write"<hr>"       调试用
  
  posB=instrb(binData,binSub)
  posB=instrb(posB,binData,bincrlf)+2   +2是到场回车换行符自己的长度
  posB=instrb(posB,binData,getSBfromDB("name="""))+6
  
  setdicData=server.CreateObject("scripting.dictionary")    用来保留信息
  
  dountilposB=6
   posE=instrb(posB,binData,getSBfromDB(""""))
   Response.Write"name="&getTextfromBin(sCome,posB,posE-posB)&"<br>"
   strName=getTextfromBin(sCome,posB,posE-posB)
   
   posB=posE+1     指针挪动到“"”的前面
   posE=instrb(posB,binData,bincrlf)
   Response.WriteposB&"->"&posE&"<br>"
  
   ifinstrb(midb(binData,posB,posE-posB),getSBfromDB("filenam</p>Windows本身的所有问题都会一成不变的也累加到了它的身上。安全性、稳定性、跨平台性都会因为与NT的捆绑而显现出来;
若相依 该用户已被删除
沙发
发表于 2015-1-20 09:45:30 | 只看该作者
ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。  因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。
因胸联盟 该用户已被删除
板凳
发表于 2015-1-24 15:16:14 | 只看该作者
完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。
愤怒的大鸟 该用户已被删除
地板
发表于 2015-2-1 17:59:03 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
再见西城 该用户已被删除
5#
发表于 2015-2-2 22:03:25 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
第二个灵魂 该用户已被删除
6#
发表于 2015-2-3 21:44:23 | 只看该作者
我想问如何掌握学习节奏(先学什么再学什么)最好详细点?
老尸 该用户已被删除
7#
发表于 2015-2-9 05:29:23 | 只看该作者
哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
只想知道 该用户已被删除
8#
发表于 2015-2-27 00:51:12 | 只看该作者
多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。
爱飞 该用户已被删除
9#
发表于 2015-3-8 18:46:51 | 只看该作者
还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。
飘飘悠悠 该用户已被删除
10#
发表于 2015-3-16 11:25:29 | 只看该作者
兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的
莫相离 该用户已被删除
11#
发表于 2015-3-22 22:45:42 | 只看该作者
兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-24 04:20

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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