asp如何实现文件上传功能

2024年11月28日 23:48
有5个网友回答
网友(1):

基本原理是:采用ADO Stream对象的BinaryRead方法将FORM中的所有数据读出,从中截取出所需的文件数据,以二进制文件方式存盘。

下面是上传文件页面的一个例子:

<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>

扩展资料

几种文件上传技术的比较

1、基于HTTP协议

该方法需要编程者利用第三方软件,如DELPHI、VB等,在应用程序中先进行HTTP协议编程,然后将待上传文件内容按HTTP协议的格式打包,最后向WEB服务器发送上传的请求报文,从而实现文件的上传。

因为DELPHI和VB不能编写完整的WEB网络程序,只能编写WEB小应用程序,因此,该方法只用于功能受限的网络应用。

2、基于VB(或DELPHI等)开发的文件上传组件

该方法利用VB(或DELPHI等编程语言)开发ASP服务器组件,实现特定的文件上传服务。它首先利用ASP表单功能将文件(二进制格式)从用户端上传到服务器端,然后使用VB开发的组件,对二进制文件进行处理,成为可以正常读写的文件。

该方法要求编程者不仅掌握ASP语言,而且还能利用VB等第三方语言进行组件编程,增加了开发的难度。

3、基于数据库技术

该方法和上个方法有类似之处。不同的地方在于对上传的二进制文件的处理上。它使用数据库来保存二进制文件。无论是小型数据库还是大型数据库都提供了存储二进制数据的数据类型,只要以Append Chunk方式将数据存入相应的字段就可以了。

该方法虽然简单可行,但是因为每次上传的文件大小都是不一样的,因此,会对数据库的空间造成很大的浪费,降低了数据的访问速度;并且使得文件只能在数据库环境下进行访问,造成了很大的不便。

网友(2):

不知道你的源代码,没法帮你找啊,不过实在找不到可以自己写段代码。

ASP上传,有无组件上传和组件上传两种

无组件上传可以在数据库中建立一个字段类型为OLE对象的字段,然后通过写代码上传。

如楼主有需要,可在此回复。

网友(3):

文件1.上传界面文件 upload.htm




http-equiv="Content-Language" content="zh-cn">
http-equiv="Content-Type" content="text/html; 
charset=gb2312">
文件上传



method="POST" action="SaveFile.asp">
文件上传:name="file" size="42"> name="bb">







文件2.保存上传文件 
SaveFile.asp

<%
dim file,filename,houzui
file = 
Request.Form("file")

if file="" 
then
response.write""
else
houzui=mid(file,InStrRev(file, 
"."))

if houzui=".gif" or houzui=".jpg" or houzui=".bmp" then 
'允许上传的文件类型
filename=year(date) & month(date) & day(date) & 
Hour(time) & minute(time) & second(time) & houzui

Set 
objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 
1
objStream.Open
objStream.LoadFromFile file
objStream.SaveToFile 
Server.MapPath(filename),2
objStream.Close

//============================把文件名写入数据库,如无需要,可删除此段代码!
Set 
conn = Server.CreateObject("ADODB.Connection")
conn.open "DRIVER={Microsoft 
Access Driver (*.mdb)}; DBQ=" & Server.MapPath("mb.mdb")
set 
rs=server.CreateObject("adodb.recordset")
rs.open "select*from 
img",conn,1,2
rs.addnew
rs("name")=filename
rs.update
set 
rs=nothing
conn.close
set 
conn=nothing
//========================================

response.write""
else
response.write""
end if
end 
if
%>

希望对你有用

网友(4):

<%Response.Charset="gb2312"%>

<%
dim conn
dim rs
dim rs2
dim rs3

sc=request("sc")
page=request("page")
if page="" then
page=1
end if

set conn=server.createobject("adodb.connection")
conn.connectionstring="Provider = Microsoft.Jet.OLEDB.4.0;Data Source="&server.mapPath("../../data/db.mdb")
conn.open

if sc<>"" then
set rs3=server.createobject("ADODB.recordset")
sql3="select * from img where id="&sc
rs3.open sql3,conn,1,3
img_name=rs3("img_name")
rs3.delete
rs3.update
rs3.close
set rs3=nothing

Set fs=Server.CreateObject("Scripting.FileSystemObject")
If fs.FileExists(server.mappath("../../pic/"&img_name&".jpg"))=true Then
set f=fs.GetFile(server.mappath("../../pic/"&img_name&".jpg"))
f.Delete
set f=nothing
End If
set fs=nothing
response.redirect "upload.asp?page="&page
end if

formsize=request.totalbytes

if formsize<>0 then
formdata=request.binaryread(formsize)

bncrlf=chrB(13)&chrB(10)
divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)
datastart=instrb(formdata,bncrlf&bncrlf)+4
dataend=instrb(datastart+1,formdata,divider)-datastart
mydata=midb(formdata,datastart,dataend)

if lenb(mydata)<30000 and lenb(mydata)>20000 then '判断文件大小,必须大于20kb小于30kb。

set rs=server.createobject("ADODB.recordset")
sql="select * from img"
rs.open sql,conn,1,3
rs.addnew
rs("temp").AppendChunk myData
tpm=replace(now(),"/","_") '用的日期做名字,日期里面有"/"," ",":"之类的东西,这些东西全部替换成"_"。
tpm=replace(tpm,":","_")
tpm=replace(tpm," ","_")
rs("img_name")=tpm
rs.update

Set MyStream=Server.CreateObject("Adodb.Stream")
MyStream.Type=1
MyStream.Open
MyStream.Write rs("temp").getChunk(8000000)
MyStream.SaveToFile server.mappath("../../pic/"&tpm&".jpg")
MyStream.close
set MyStream=nothing

rs("temp")="" '把access里面的二进制图片内容删除,只保留图片的名字。
rs.update

rs.close
set rs=nothing
response.write ""

else
response.write ""
end if
end if
%>



编辑

















<%
set rs2=server.createobject("ADODB.recordset")
sql2="select * from img order by id desc"
rs2.open sql2,conn,1,1
rs2.pagesize=5
rs2.absolutepage=page
for s=1 to 5
if not rs2.eof and not rs2.bof then
%>

<%
else
exit for
end if
rs2.movenext
next
%>



<%
a=page-1
b=page+1
if a<0 or a=0 then
%>

<%
else
%>

<%
end if
%>

<%
if b>rs2.pagecount then
%>

<%
else
%>

<%
end if
%>

<%
rs2.close
set rs2=nothing
conn.Close
Set conn = Nothing
%>


网友(5):

你登陆网站后台看一下,是否支持无组件上传,如果支持,可以选择无组件上传。如果不允许选择,你在百度上搜一下DLL组件。或者你把说明中发出来,我给你看看是什么组件。