无组件上传例程

上传|无组件

-----------------------------
表单填写页的内容:
-----------------------------
<html>
<head>
<meta name="Author" content="Sander Duivestein">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>将本地的文件上载到数据库</title>
</head>
<body>
<font size="2" size="2"><br>
</font>
<form name="frmUpload" method="post" enctype="multipart/form-data" action="Upload.asp">
<table cellspacing="0" cellpadding="0" width="490">
<tr>
<td width="167">
<p align="right"><font size="2" size="2">请选择文件:</font></p>
</td>
<td width="319"><font size="2" size="2"><input type="file" name="vFileName"></font></td>
</tr>
<tr>
<td align="right" width="167"><font size="2" size="2">文件说明1:</font></td>
<td width="319"><input name="shuoming" size="32" ></font></td>
</tr>
<tr>
<td align="right" width="167"><font size="2" size="2">文件说明2:</font></td>
<td width="319"><input name="shuoming_2" size="32" </td>
</tr>
<td width="167"></td>
<td width="319">
<p align="left"><font size="2" size="1"><input type="submit" style="background-image: url('images/back.jpg'); cursor: hand; font-sizd: smaller; left: 0px; width: 94; top: 5px; height: 25" value=" 上 载 " style="background-image: url('images/back.jpg'); cursor: hand; font-sizd: smaller; left: 0px; width: 94; top: 5px; height: 25" size="23" ></font></p>
</td>
<tr>
<td colspan="2" align="right" width="487"></td>
</tr>
</table>
</form>
</body>

</html>

----------------------------------
Upload.asp的内容:
----------------------------------
<%
Response.Buffer = TRUE
Response.Clear
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
'response.binarywrite requestbin
'取得表单的全部内容
'''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")
' UploadRequest结构将用来存放表单

PosBeg = 1
PosEnd = InstrB(PosBeg,RequestBin,StoB(chr(13)))
boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
'求字段间的分隔串(即:-----------------------------7d029e347d8 )
boundaryPos = InstrB(1,RequestBin,boundary)

Do until (boundaryPos=InstrB(RequestBin,boundary & StoB("--")))
'Members variable of objects are put in a dictionary object
Dim UploadControl
Set UploadControl = CreateObject("Scripting.Dictionary")
'Get an object name
Pos = InstrB(BoundaryPos,RequestBin,StoB("Content-Disposition"))
Pos = InstrB(Pos,RequestBin,StoB("name="))
PosBeg = Pos+6
PosEnd = InstrB(PosBeg,RequestBin,StoB(chr(34)))
Name = BtoS(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
PosFile = InstrB(BoundaryPos,RequestBin,StoB("filename="))
PosBound = InstrB(PosEnd,RequestBin,boundary)
' response.write "<hr>"
' response.write "name="&name&"<BR>"
' name为表单项的名字
'Test if object is of file type
If PosFile<>0 AND (PosFile<PosBound) Then
PosBeg = PosFile + 10
PosEnd = InstrB(PosBeg,RequestBin,StoB(chr(34)))
FileName = BtoS(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
' response.write "<BR>"
' response.write "filename="&filename&"<BR>"
' filename为全路径文件名(如果是文件类型话)
UploadControl.Add "FileName", FileName
Pos = InstrB(PosEnd,RequestBin,StoB("Content-Type:"))
PosBeg = Pos+14
PosEnd = InstrB(PosBeg,RequestBin,StoB(chr(13)))
ContentType = BtoS(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add "ContentType",ContentType
' response.write "filetype="&ContentType&"<BR>"
' response.write "<BR>"
PosBeg = PosEnd+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
filesize = Posend - Posbeg
UploadControl.Add "FileSize",filesize
' response.write "value="
' response.binarywrite value
' response.write "<BR>"
Else
Pos = InstrB(Pos,RequestBin,StoB(chr(13)))
PosBeg = Pos+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = BtoS(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
' response.write "value="&value&"<BR>"
' value为表单项的值,如果为文件项,则value为一长串二进制码
End If

UploadControl.Add "Value" , Value

UploadRequest.Add name, UploadControl
'UploadRequest增加一个Key为name的项,此项的value仍是一个dixtionary对象

BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)

Loop
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
contentType = UploadRequest.Item("vFileName").Item("ContentType")
filesize = UploadRequest.Item("vFileName").Item("FileSize")
filepathname = UploadRequest.Item("vFileName").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
filevalue = UploadRequest.Item("vFileName").Item("Value")
shuoming = UploadRequest.Item("shuoming").Item("Value")
shuoming_2 = UploadRequest.Item("shuoming_2").Item("Value")

'取出嵌套的dictionary对象的值,注意dictionary的Key区分大小写!!!
''''''''''''处理数据库'''''''''''''''''''''''''''''''''''''''''
set connGraph = server.CreateObject("ADODB.connection")
connGraph.ConnectionString = Application("DNS")
connGraph.Open
Set DB = Server.CreateObject("ADODB.RecordSet")
db.Open "SELECT * FROM t_recordnote where 1<>1",connGraph,1,3
db.addnew
db("record").appendchunk filevalue
db("shuoming") = shuoming
db("shuoming_2") = shuoming_2
db("username") = session("username")
db("filetype") = contentType
db("time") = now()
db("filename") = filename
db("filesize") = filesize
db.update
db.close
set db = nothing
response.write "文件"&filename&"上载成功"
'''''''''''''''''''''''''''''''''''''''''''''
Function StoB(varStr)
str2bin = ""
For i = 1 To Len(varstr)
varchar = Mid(varstr, i, 1)
varasc = Asc(varchar)
' asc对中文字符求出来的值可能为负数,
' 加上65536就可求出它的无符号数值
' -1在机器内是用补码表示的0xffff,
' 其无符号值为65535,65535=-1+65536
' 其他负数依次类推。
If varasc < 0 Then
varasc = varasc + 65535
End If
'对中文的处理:把双字节低位和高位分开
If varasc > 255 Then
varlow = Left(Hex(Asc(varchar)), 2)
varhigh = Right(Hex(Asc(varchar)), 2)
str2bin = str2bin & ChrB("&H" & varlow) & ChrB("&H" & varhigh)
Else
str2bin = str2bin & ChrB(AscB(varchar))
End If
Next
StoB = str2bin
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''''''
'Byte string to string conversion
Function BtoS(Binstr)
'中文字符Skip标志
skipflag = 0
strC = ""
If Not IsNull(binstr) Then
lnglen = LenB(binstr)
For i = 1 To lnglen
If skipflag = 0 Then
tmpBin = MidB(binstr, i, 1)
'判断是否中文的字符
If AscB(tmpBin) > 127 Then
'AscW会把二进制的中文双字节字符高位和低位反转,所以要先把中文的高低位反转
strC = strC & Chr(AscW(MidB(binstr, i + 1, 1) & tmpBin))
skipflag = 1
Else
strC = strC & Chr(AscB(tmpBin))
End If
Else
skipflag = 0
End If
Next
End If
BtoS = strC
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''''
%>

------------------------------
表结构:
------------------------------
drop TABLE [t_RecordNote]
CREATE TABLE [t_RecordNote] (
[RecordId] [int] IDENTITY (1, 1) NOT NULL ,
[filename] [varchar] (60) NULL ,
[filetype] [varchar] (40) NULL ,
[UserName] [varchar] (30) NULL ,
[Time] [datetime] NULL ,
[shuoming] [varchar] (200) NULL ,
[shuoming_2] [varchar] (200) NULL ,
[filesize] [int] NULL ,
[Record] [image] NULL ,
PRIMARY KEY CLUSTERED
(
[RecordId]
) ON [PRIMARY]
)
GO

时间: 2024-09-28 08:04:15

无组件上传例程的相关文章

DUDU的无组件上传例程

上传|无组件 '##################################################################### '备注:我没有验证,提供给大家一种参考!请大家自行验证 '欢迎大家发表你认为好的精彩程序代码 '大风(xuankong) 2000.12.8 '##################################################################### 标题:还是用我的无组件文件上载吧,与ASPCN组件有异曲同工

ASP实例:一个简单的ASP无组件上传类

简单的ASP无组件上传类,发出来让大家看看.可以做做实验! 以下为引用的内容: <%@ language="javascript"%><%var self = Request.serverVariables("SCRIPT_NAME");if (Request.serverVariables("REQUEST_METHOD")=="POST"){        var oo = new uploadFile(

ASP无组件上传类的应用实例

上传|无组件|应用实例|上传|无组件|应用实例 ''''''-------- upload.htm ------------- <script language="javascript">   function checkFile(myForm)    { if(myForm.File1.value=='') return false;    myForm.submit();     }</script><form method="POST&qu

蛙蛙推荐:蛙蛙牌无组件上传类

上传|无组件|上传|无组件 <%'当表单里既有文本域又有文件域的时候,我们必须把表单的编码类型设置成"multipart/form-data"类型'这时候上传上来的编码文件并不能直接取出文本域的值和文件域的二进制数据,这就需要拆分表单域'在上传上来的数据流中在每个表单域间都有一个随机的分隔符,这个分隔符是在同一个流中不变的,不同的流分隔符不变,'这个分隔符在流的最开头,并且以一个chrb(13) + chrb(10)结束,知道这个后我们就可以用这个分隔符来遍历拆分表单域了.'对于

无组件上传实例

上传|无组件 这是我从我以前写过的程序中分离出来的,由于这段代码是针对整体成体程序写的,因此功能非常简单,而且对于上传的数据也没有严格的限制,所以难免会出现这样或那样的错误. 我贴着篇文章主要是让大家了解一下无组件上传的思路,而不是让大家使用的. <% 'Yanhang.00上传程序V1.0'1.0版本的程序是从以前的程序修改过来的,但是可能还是仍有不足,如果你发现任何错误,请写信通知我,谢谢!'请在使用前先修改下面的信息'目前本程序我认为最大的不足就是只能用系统时间定义文件名,不能使用源文件名

化境ASP无组件上传

上传|无组件 一直以来,由于FileSystemObject的局限,所以ASP最大的难题就是文件上传,大多解决法就是安装第三方上传组件.可第三方组件有很多问题,有的组件要注册,有的组件要在表单中加上他的版权信息.还有的就是组件的兼容问题.在网上也流传了很多无组件上传的代码,但都是只能上传文本文件,或是只能将文件上传到数据库中.作者这段时间在研究ASP,发现可以不用第三方组件上传任意类型的文件.就写了这个类,给大家一个方便,整个类放在一个文件:upload_5xsoft.inc 在 Example

Asp无组件上传带进度条(续)

上传|无组件 几个月前,写过一篇关于Asp无组件上传带进度条的Blog,当时主要分析了一下通过Web文件上传并在后台获取分析数据的实现原理.其中实现进度条的根本就是要实现分块获取数据,根据分块大小和块数记录已上传大小.还有一些具体的细节问题当时并没有说清楚: Q: 进度信息如何访问?A: 进度信息保存在Application中,每次上传时生成一个进度ID,根据这个进度ID可以检索Application中的当前上传进度信息. Q: 进度信息以什么形式保存在Application中?A: Asp太弱

ASP无组件上传错误 ASP 0104的解决方法

错误|解决|上传|无组件 问题描述:ASP无组件上传程序无法上传较大的文件"Request 对象 错误 'ASP 0104 : 80004005'",(大概大于100kb就不行),但是原先在2000 server中可以上传5m左右的文件. 解决方法:在IIS属性中选中"允许直接编辑配置数据库",然后.在服务里关闭iis admin service服务找到windows\system32\inesrv\下的metabase.xml编辑其中的ASPMaxRequestE

稻农的无组件上传程序ASP.NET版

asp.net|程序|上传|无组件   上传在Web开发中,是非常普遍的一项任务,以前用ASP的时候,一直用稻农的无组件上传工具,觉得很好用,现在学Asp.net了,却发现没有类似原来稻农的无组件上传程序,因此花了点时间,将稻农的无组件上传程序用vb.net改写了一下,可以编译成DLL,在C#或者Vb.net等任意asp.net支持的语言中使用,在共享出来,希望能为大家节约点时间,也欢迎提出意见和建议,让他更完善. Option Explicit On Option Strict On Impo