用ASP实现文件上传,最好能不用数据库,直接存成文件,可以么?。。提交同时还有很多其他的表单域,怎样分离那?

annancy 2002-08-05 09:52:24
用ASP实现文件上传,最好能不用数据库,直接存成文件,可以么?。。提交同时还有很多其他的表单域,怎样分离那?

我是新手,多谢指教!!
...全文
176 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yonghengdizhen 2002-08-06
  • 打赏
  • 举报
回复
界面处理页

DOCUMENT_FILING_INDEX_ADD_ATTACHMENTS_INC.ASP

<!--#INCLUDE FILE="../../FUNCTIONS/PUBLIC_FUNCTIONS.ASP" -->
<!--#INCLUDE FILE="../../FUNCTIONS/OOCL_FUNCTIONS.ASP"-->
<!--#INCLUDE FILE="../INCLUDES/LOCAL_VARIABLES.ASP"-->
<!--#INCLUDE FILE="../INCLUDES/AUTHENTICATE.ASP"-->
<HTML>
<HEAD>
<meta http-equiv='Content-Type' content='text/html; charset=<%=Find_ini("[Charset]")%>'>
<link REL="STYLESHEET" TYPE="text/css" HREF="<%=strCSSPath%>pagestyle.css">
<script language="javascript" src="../../Functions/Functions.js"></script>
<script language=vbscript src="../../functions/functions.vbs"></script>
<script language=javascript src="../includes/common.js"></script>
</HEAD>
<body SCROLL=no>
<FORM ENCTYPE="multipart/form-data" method=post onsubmit="" action="DOCUMENT_FILING_INDEX_ADD_ATTACHMENTS_DB.ASP?DocIndex=<%=Request.QueryString("DocIndex")%>">
<table width="100%" border="0" cellspacing="1" cellpadding="0">
<tr class="blue_bg">
<td width="10%">Attachment</td>
<td width="10%">Comment on attachment</td>
</tr>
<tr>
<td width="10%">
<INPUT class="input" name=Attachment type=file size="23" onkeypress="return false;">
</td>
<td width="10%">
<INPUT class="input" name="Comment" size="20" maxlength=255>
</td>
</tr>
<tr>
<td width="10%"> </td>
<td width="10%" align="right">
<INPUT class="btn" type="button" value="Add More Attachments" onclick="AddMoreRowEx()">
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="1" cellpadding="0">
<tr align="center"><td colspan="2">  </td></tr>
<tr align="center">
<td colspan="2">
<input class="btn" type="submit" value="Save" name=Save>
<input class="btn" type="submit" value="Confirm" name=Confirm>
</td>
</tr>
</table>
<!--img src="../REVIEW/COMMON_PICTURE_SHOW.ASP?ID=3"-->
<!--img src="../REVIEW/COMMON_PICTURE_SHOW.ASP?ID=2"-->
</form>
</body>
</HTML>
yonghengdizhen 2002-08-06
  • 打赏
  • 举报
回复
数据处理页:
DOCUMENT_FILING_INDEX_ADD_ATTACHMENTS_DB.ASP

<!--#INCLUDE FILE="../../FUNCTIONS/PUBLIC_FUNCTIONS.ASP" -->
<!--#INCLUDE FILE="../../FUNCTIONS/OOCL_FUNCTIONS.ASP"-->
<!--#INCLUDE FILE="../INCLUDES/LOCAL_VARIABLES.ASP"-->
<!--#INCLUDE FILE="../INCLUDES/AUTHENTICATE.ASP"-->
<!--#INCLUDE FILE="../INCLUDES/FILEUPLOAD.ASP"-->
<%
if UCase(Request.ServerVariables("REQUEST_METHOD"))<>"POST" then
Response.Redirect Request.ServerVariables("HTTP_REFERER")
end if
Set UploadRequest=CreateObject("Scripting.Dictionary")
RequestBin=Request.BinaryRead(Request.TotalBytes)
GetUpload RequestBin
If ConnectDB("[LSD DSN Name]",oConn,false) Then
set oRs=CreateObject("ADODB.Recordset")
oRs.Open "Doc_filing_index_attachment",oConn,1,3,2
if Err.number<>0 then
Set oRs=Nothing
bOOCLIsErr=true
strOOCLErrMsg=strOOCLErrMsg & arrUnknowErr(2)
else
for i=0 to UploadRequest("Comment").count-1
if len(UploadRequest("Attachment")(i)("Value"))>0 then
oRs.AddNew
oRs("Doc_index")=Request.QueryString("DocIndex")
oRs("Image_file").AppendChunk UploadRequest("Attachment")(i)("Value")
oRs("Image_type")=UploadRequest("Attachment")(i)("ContentType")
oRs("Comment")=UploadRequest("Comment")(i)("Value")
end if
oRs.Update
next
oRs.Close
end if
else
bOOCLIsErr=true
strOOCLErrMsg=strOOCLErrMsg & arrUnknowErr(0)
end if
FreeDBRes
Response.Redirect Request.ServerVariables("HTTP_REFERER")
%>
yonghengdizhen 2002-08-06
  • 打赏
  • 举报
回复
混合任何类型的域同时提交的代码给你看看先:

支持同名域.
FILEUPLOAD.ASP

<%
sub GetUpload(FormData)
Dim DivStr,DivLen,PosOpenBoundary,PosCloseBoundary
Dim FieldNameStart,FormFieldName,FieldNameSize,FormFieldData,DataStart,DataEnd,DataSize
Dim FieldFileNameStart,FormFileName,FieldFileNameSize
Dim FieldFileCTStart,FormFileCT,FieldFileCTSize
'分隔标志串(+CRLF),
DivStr=LeftB(FormData,InStrB(FormData,str2bin(VbCrLf))-1)
'分隔标志串长度
DivLen=LenB(DivStr)
PosOpenBoundary=InStrB(FormData,DivStr)
PosCloseBoundary=InStrB(PosOpenBoundary+1,FormData,DivStr)
Do until PosCloseBoundary=lenb(FormData) or PosCloseBoundary=0 '(PosOpenBoundary=lenb(FormData))
dim Field,FirstField,bIsFile
bIsFile=false
FormFieldName=""
Set Field=CreateObject("Scripting.Dictionary")
'Name起始位置(Name="xxxxx"),加6是因为[Name="]长度为6
FieldNameStart=InStrB(PosOpenBoundary,FormData,str2bin("name="))+6
FieldNameSize=InStrB(FieldNameStart,FormData,ChrB(34))-FieldNameStart'(")的ASC值=34
FormFieldName=bin2str(MidB(FormData,FieldNameStart,FieldNameSize))

'FileName起始位置(FileName="xxxxx")
FieldFileNameStart=InStrB(PosOpenBoundary,FormData,str2bin("filename="))+10
if PosCloseBoundary=0 then
PosCloseBoundary=lenb(FormData)
end if
If FieldFileNameStart<PosCloseBoundary And FieldFileNameStart>PosopenBoundary Then
FieldFileNameSize=InStrB(FieldFileNameStart,FormData,ChrB(34))-FieldFileNameStart '(")的ASC值=34
FormFileName=bin2str(MidB(FormData,FieldFileNameStart,FieldFileNameSize))
Field.Add "FilePath",FormFileName
Field.Add "FileName",GetFileName(FormFileName)
bIsFile=true
End If
'Content-Type起始位置(Content-Type: xxxxx)
FieldFileCTStart=InStrB(PosOpenBoundary,FormData,str2bin("Content-Type:"))+14
If FieldFileCTStart<PosCloseBoundary And FieldFileCTStart>PosOpenBoundary Then
FieldFileCTSize=InStrB(FieldFileCTStart,FormData,str2bin(VbCrLf & VbCrLf))-FieldFileCTStart
FormFileCT=bin2str(MidB(FormData,FieldFileCTStart,FieldFileCTSize))
Field.Add "ContentType",FormFileCT
End If
'数据起始位置:2个CRLF开始
If bIsFile Then
DataStart=InStrB(FieldFileCTStart,FormData,str2bin(VbCrLf))+4
DataEnd=InstrB(DataStart,FormData,DivStr)-2
FormFieldData=MidB(FormData,DataStart,DataEnd-DataStart)
Else
DataStart=InstrB(FieldNameStart,FormData,str2bin(VbCrLf))+4
DataEnd=InstrB(DataStart,RequestBin,DivStr)-2
FormFieldData=bin2str(MidB(FormData,DataStart,DataEnd-DataStart))
End If
Field.Add "Value",FormFieldData
Field.Add "FieldDataBgnPos",DataStart
Field.Add "FieldDataLength",DataEnd-DataStart
if UploadRequest.Exists(FormFieldName) then
iCount=UploadRequest(FormFieldName).Count
UploadRequest(FormFieldName).Add iCount,Field
else
Set FirstField=CreateObject("Scripting.Dictionary")
FirstField.Add 0,Field
UploadRequest.Add FormFieldName,FirstField
end if
PosOpenBoundary=PosCloseBoundary
PosCloseBoundary=InStrB(PosOpenBoundary+1,FormData,DivStr)
loop
End sub
'把二进制字符串转换成普通字符串函数
Function bin2str(binstr)
Dim varlen,clow,ccc,skipflag,i
'中文字符Skip标志
skipflag=0
ccc=""
If Not IsNull(binstr) Then
varlen=LenB(binstr)
For i=1 To varlen
If skipflag=0 Then
clow=MidB(binstr,i,1)
'判断是否中文的字符
If AscB(clow)>127 Then
'AscW会把二进制的中文双字节字符高位和低位反转,所以要先把中文的高低位反转
ccc=ccc & Chr(AscW(MidB(binstr,i+1,1) & clow))
skipflag=1
Else
ccc=ccc & Chr(AscB(clow))
End If
Else
skipflag=0
End If
Next
End If
bin2str=ccc
End Function

'把普通字符串转成二进制字符串函数
Function str2bin(varstr)
dim i,varchar,varasc
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
End Function
'取得文件名(去掉Path)
Function GetFileName(FullPath)
If FullPath<>"" Then
FullPath=StrReverse(FullPath)
if InStr(1,FullPath,"\")>0 then
FullPath=Left(FullPath,InStr(1,FullPath,"\")-1)
GetFileName=StrReverse(FullPath)
else
GetFileName=StrReverse(FullPath)
end if
Else
GetFileName=""
End If
End Function
%>
slimer_2002 2002-08-05
  • 打赏
  • 举报
回复
绝对好东东。刘勇军的文件上传组件
http://asp123.on.net.cn/download/
annancy 2002-08-05
  • 打赏
  • 举报
回复
感谢帮助!!
annancy 2002-08-05
  • 打赏
  • 举报
回复
找到了!。。

还有没有别的方法呢?
mosane 2002-08-05
  • 打赏
  • 举报
回复

几个文件组成的稻香老农无组件上传系统。。

上传的FORM独立出来,一般用IFRAME,提交后得到路径就行。
annancy 2002-08-05
  • 打赏
  • 举报
回复
在那里亚,我找不到。。
君子藏器 2002-08-05
  • 打赏
  • 举报
回复
你可以使用稻香老农的文件上传类。
http://www.5xSoft.com/
艾恩无组件上传类为自己写的类,不敢夸口说多完美,但能实现基本的功能.包括提取表单数据、上传到不同文件夹、保存到数据库(上传和保存表单可同时进行)、限制上传扩展名、限制上传大小、选择文件保存类型(原文件名和时间随机命名)等! 艾恩ASP无组件上传类 2013.12.09 更新内容: 修正快速保存时的BUG 上传类的主要的功能如下: 1、自由设置最大上传大小、单文件最大上传大小 2、自由设置允许上传的文件类型 3、可设置文本的编码,以适应各种上传环境 4、内置进度条,用户可选择开启和关闭(需配合客户端程序) 5、多种错误状态处理 6、多种文件保存方式:原文件名、随机文件名、用户自定义文件名 7、自由选择是否覆盖已存在文件 8、完整保存表单数据,支持同名表单,不支持同名文件 9、可获取常见图片格式的宽高 10、优化的上传过程。。。 程序特点: 1.尽量追求简洁,减少赘余代码 2.全面保存客户提交的信息(普通表单,文件值,相同表单值) 3.准确获取上传中的错误信息 4.可选择文件保存方式(以原文件名保存和以新文件名保存,新文件名为时间 随机数字组成) 5.文件保存函数简洁,调用方便,并且比较灵活(保存路径和保存方式可随时改变) 6.同时可以获取文件的二进制形式,从而可以实现将二进制数据保存到数据库 7.灵活运用本类,可以实现表单数据和文件同时编辑(这是一般类无法达到的) 8.更多的用途靠大家来发现了..... 9.examples里面有两个很简单的例子,能掌握这两个例子就可以灵活使用本类 全VBS版本 complex 文本文件混合上传示例 muti 多文件上传 single 单文件上传 其中muti包含两种方法上传,index.asp-多文件单个保存;index2.asp文件循环保存 详细说明见Jo.Upload.pdf
艾恩ASP无组件上传类,不敢夸口说多完美,但能实现基本的功能.包括提取表单数据、上传到不同文件夹、保存到 数据库(上传和保存表单可同时进行)、限制上传扩展名、限制上传大小、选择文件保存类型(原文件名和时间随机命名)等! 本类可以完整保存用户信息,包括同名称表单(和request.form一样以,为分割符进行保存),以及文件的客户端路径。 处理完数据后,程序会提供两个方法-----files和forms,通过这两个方法实现文件的保存以及信息的读取,并且可以调用 fileaction类的GetBytes方法获取文件的二进制数据,可以把此数据保存到数据库(作者不推荐把二进制保存到数据库, 会影响数据库性能)。 此类最大的优点更多表现在多文件上传,即可以使用循环把所有文件保存到同一目录,又可以单独操作保存到不同目 录,灵活性相当高,完全脱离其他任何对象的束缚。并且可以自主选择保存方式--以原文件名保存或以程序自动生成的文 件名(时间 随机数字)保存 本类特点: • 尽量追求简洁,减少赘余代码 • 全面保存客户提交的信息(普通表单,文件值,相同表单值) • 准确获取上传中的错误信息 • 可选择文件保存方式(以原文件名保存和以新文件名保存,新文件名为时间 随机数字组 • 文件保存函数简洁,调用方便,并且比较灵活(保存路径和保存方式可随时改变) • 同时可以获取文件的二进制形式,从而可以实现将二进制数据保存到数据库 • 灵活运用本类,可以实现表单数据和文件同时编辑(这是一般类无法达到的) • 更多的用途靠大家来发现了..... • Demo里面有几个个很简单的例子,能掌握这几个个例子一定可以灵活使用本类 更新日期:2011-3-25 1.修正上传数据丢失的错误. 2.去除自动获取图片宽高的代码。
本示例简单演示了无组件上传文件. 本示例所使用上传类为自己写的类,不敢夸口说多完美,但能实现基本的功能.包括提取表单数据、上传到不同文件夹、保存到数据库(上传和保存表单可同时进行)、限制上传扩展名、限制上传大小、选择文件保存类型(原文件名和时间随机命名)等! 1.尽量追求简洁,减少赘余代码 2.全面保存客户提交的信息(普通表单,文件值,相同表单值) 3.准确获取上传中的错误信息 4.可选择文件保存方式(以原文件名保存和以新文件名保存,新文件名为时间+随机数字组成) 5.文件保存函数简洁,调用方便,并且比较灵活(保存路径和保存方式可随时改变) 6.同时可以获取文件的二进制形式,从而可以实现将二进制数据保存到数据库 7.灵活运用本类,可以实现表单数据和文件同时编辑(这是一般类无法达到的) 8.更多的用途靠大家来发现了..... 9.examples里面有两个很简单的例子,能掌握这两个例子就可以灵活使用本类 更新日志: 2008-8-18日: 1.优化了上传类,添加了上传文件总大小属性; 2.完善了文件保存类,操作更加容易; 3.整理了示例代码更容易理解; 4.可以在客户端自由选择保存方式 5.示例增加了防刷新机制 2008-8-19日: 1.对上传类进行再次优化,增加了对相同名称表单的支持 2.为方便网友使用,写出了5100字的开发文档,详细介绍了本类及使用方法 3.新增加两个简单示例,是更容易理解该类的方便之处 4.增加了读取文件二进制的方法,可以将二进制数据保存到数据库 5.为方便演示去掉了防刷新 2008-8-20日: 1.增加了对于隐藏程序真实扩展名上传可执行文件进行封杀功能,除非你允许上传,否则拒绝任何可执行文件的上传,即使修改了扩展名. 2008-8-28日: 1.修正了文件格式合法性的判断!修正后可以判断常见的文件格式的合法性,包括jpg,bmp,gif,png,chm,pdf,doc,xls(excel工作表),ppt(PowerPoint幻灯片演示),mdb,rar几种格式的文件 2.修正了不选择文件不能上传的错误,修正后可以在上传的时候判断是否选择了文件,判断方法为myupload.files.exists("file1"),其中myupload为定义的上传类、file1是要检测的文件

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧