<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" />
<title>Transform</title>
<style type="text/css">
.test-box{
width:600px
margin:50px auto}
.pic{
-webkit-transition:all 1s ease-in-out
transition:all 1s ease-in-out
cursor:pointer}
.top-pic{
position:absolute
transform:scale(0,0)}
.test-box:hover .top-pic{
-webkit-transform-origin:top right
-webkit-transform:scale(1,1)}
.test-box:hover .bot-pic{
-webkit-transform:scale(0,0)
-webkit-transform-origin:bottom left
opacity: .5
-webkit-transform:rotate(120deg)
-webkit-transform-origin:bottom left
}
</style>
</head>
<body>
<div class="test-box">
<img class="pic top-pic" src="test-pic01.jpg" />
<img class="pic bot-pic" src="test-pic02.jpg" />
</div>
</body>
</html>
随便写了几个效果,没有用到JS,不过要用到JS只要把触发事件替换掉上面的hover就行了,比如:
$(".button").click(function () {
。。。
})
这里面用到CSS3,所以请不要用IE11以下的低版本浏览器,不然你啥都看不见
ASP 组件 FILE对象当前,基于浏览器/服务器模式的应用比较流行。当用户需要将文件传输到服务器上时,常用方法之一是运行FTP服务器并将每个用户的FTP默认目录设为用户的Web主目录,这样用户就能运行FTP客户程序并上传文件到指定的 Web目录。这就要求用户必须懂得如何使用FTP客户程序。因此,这种解决方案仅对熟悉FTP且富有经验的用户来说是可行的。 如果我们能把文件上传功能与Web集成,使用户仅用Web浏览器就能完成上传任务,这对于他们来说将是非常方便的。但是,一直以来,由于File System Object的仅能传送文本文件的局限,所以ASP最大的难题就是文件上传问题。下面介绍的就是如何在基于HTTP协议的网页中实现文件的上传。
一.通过HTTP上传的三种机制
通过HTTP上传有三种机制:RFC1867, PUT 和 WebDAV。
PUT 是在HTTP 1.1引入了一个新的HTTP动词。当web服务器收到一个HTTP PUT和对象名字,它将会验证用户,接收HTTP流的内容,并把它直接存入web服务器。由于这可能会对一个web站点造成破坏,并且还会失去HTTP最大的优势:服务器可编程性。在PUT的情况下,服务器自己处理请求:没有空间让CGI或者ASP应用程序介入。唯一让你的应用程序捕获PUT的方法是在低层 *** 作,ISAPI过滤层。由于相应的原因,PUT的应用很有限。
而WebDAV允许web内容的分布式认证与翻译。它引入了几种新的HTTP动词,允许通过HTTP上传,锁定/解锁,登记/检验web内容。Office 2000中的"Save to web" 就是通过WebDAV来实现的。如果你所感兴趣的一切都是上传内容,WebDAV应用得非常出色,它解决了很多问题。 然而,如果你需要在你的web应用程序里面上传文件,WebDAV对你就毫无用处可言。象HTTP PUT一样,那些WebDAV的动词是被服务器解释的,而不是web应用程序。你需要工作在ISAPI过滤层来访问WebDAV的这些动词,并在你的应用程序中解释内容。
RFC1867 (http://image.21tx.com/files/20060405/21463.txt) 最终被W3C在HTML3.2中接受前,是作为一种建议标准。它是一种非常简单但是功能很强大的想法:在表单字段中定义一个新类型。
<INPUT TYPE="FILE">
并且在表单本身加入了不同的编码方案,不再使用典型的:
<FORM ACTION="formproc.asp" METHOD="POST">
而是使用:
<FORM ACTION="formproc.asp" METHOD="POST" ENCTYPE="multipart/form-data">
这种编码方案在传送大量数据的时候,比起缺省的"application/x-url-encoded"表单编码方案,显得效率要高得多。URL编码只有很有限的字符集,使用任何超出字符集的字符,必须用'%nn'代替,这里的nn表示相应的2个十六进制数字。例如,即使是普通的空格字符也要用'%20'代替。而RFC1867使用多部分MIME编码,就象通常在e-mail消息中看到的那样,不编码来传送大量数据,而只是在数据周围加上很少的简单但实用的头部。主要浏览器的厂商都采用了建议的"浏览..."按钮,用户能很容易的使用本地"打开文件..." 对话框选择要上传的文件。
RFC1867仍然将大多数文件上传的灵活方法留给了你的web应用程序。PUT用得很有限。WebDAV对内容的作者很有用,比如FrontPage用户,但是对想在web应用程序中加入文件上传的web开发者来说很少用到。因此,RFC1867是在web应用程序中加入文件上传的最好的办法。
在实际应用中,微软免费提供了Posting Acceptor 。ASP不懂"multipart/form-data" 编码方案。取而代之,微软提供了Posting Acceptor ,Posting Acceptor是一种在上传完成后,接受REPOST到一个ASP页的ISAPI应用程序。
Software Artisans的SA-FileUp是最早的商业Active Server组件之一。几经改进,现在作为一个纯粹的ASP组件存在。
二.基于ASP的文件上传实现原理分析
基本原理是:采用ADO Stream对象的BinaryRead方法将FORM中的所有数据读出,从中截取出所需的文件数据,以二进制文件方式存盘。
下面是上传文件页面的一个例子(upload.htm):
<html>
<body>
<form name="Upload" Method="Post" Enctype="multipart/form-data" Action="Upload.asp">
<input type="file" name="FileName">
<INPUT TYPE="Submit" VALUE="Upload"></TD>
</form>
</body>
</html>
程序中使用了文件对象,这样在Upload.asp中采用BinaryRead方法读来的原始数据就不仅仅是选择的文件本身的数据,还包含该文件在用户硬盘上的路径、类型、提交页面的表单域名等相关信息的描述,这样我们就需从中提取出文件的具体内容。根据分析,数据的头部信息与数据的分界线是两对回车换行符,尾部也有分隔信息,我们可以采用类似以下的方法获取文件数据。
Dim FormData.FormSize,DataStart,CLStr,DivStr
FormSize=Request.TotalBytes
FormData=Request.BinaryRead(FormSize)
CLStr=ChrB(13)&ChrB(10)
DataStart=InStrB(FormData.CLStr&CLStr)+4
'4是两对回车换行符的长度
DivStr=LeftB(FormData,InStrB(FormData,CLStr)-1)
DataSize=InStrB(DataStart+1,FormData,DivStr)-DataStart-2
FormData=MidB(FormData,DataStart,DataSize)
FormData就是文件的内容了。
中间根据需要,可进行相应的处理。最后的工作就是将文件保存了。保存的方法可以有两种:一种是利用VB或VC之类程序中的二进制文件 *** 作方法,在工程中加入适当的类型库,最终编译成DLL文件,使用时再将该DLL文件注册就可以了。文件存贮程序如下:
Public Function SaveFile(Pathname As String) As String
Dim objContext As ObjectContext
Dim objRequest As Request
Set objContext=GetObjectContext()
Set objRequest=objContext("Request")
'以下的一段代码是进行文件存贮的有关 *** 作
Dim FormData() As Byte,CLStr,DivStr
Dim DataStart As Long,DataSize As Long
DataSize=objRequest.TotalBytes
Redim FormData(DataSize-1)
FormData=objRequest.BinaryRead(DataSize)
CLStr=ChrB(13) &ChrB(10)
DataStart=InStrB(FormData,CLStr &CLStr)+4
DivStr=LeftB(FormData,InStrB(FormData,CLStr)-1)
DataSize=InStrB(DataStart+1,FormData,DivStr)-DataStart-2
FormData=MidB(FormData,DataStart,DataSize)
'创建一个二进制文件并将FormData写入其中
Open Pathname For Binary As 1
Put #1,,FormData
Close #1
SaveFile="OK!"
End Function
第二种方法是利用ADO STREAM中提供的二进制文件 *** 作方法来完成,保存文件的语句是: StreamOBJ.SaveToFile (fileName,2)。在 这种 *** 作中,我们可以将有关的 *** 作存放在一个类文件中,在应用时,直接将该类文件包含在ASP程序中就可以了
HTML的全称是超文本标记语言,是一种标记语言。它包括一系列标签,可以统一网络上文档的格式,将分散的互联网资源连接成一个逻辑整体。HTML是由HTML命令组成的描述性文本,可以解释文字、图形、动画、声音、表格、链接等。Html是一种用来描述网页的语言。它被称为超文本标记语言,它是一种标记语言。它包括一系列标签,可以统一网络上文档的格式,将分散的互联网资源连接成一个逻辑整体。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)