asp如何实现文件上传功能
我不太懂的,谁能帮我看看,我的qq:43071046
想实现upload功能的,请注册(regsvr32)/admin/up/里边那个dll组件 但是那个文件夹里根本没有dll为后缀名的文件,只有一个demo3.asp文件 展开
基本原理是:采用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方式将数据存入相应的字段就可以了。
该方法虽然简单可行,但是因为每次上传的文件大小都是不一样的,因此,会对数据库的空间造成很大的浪费,降低了数据的访问速度;并且使得文件只能在数据库环境下进行访问,造成了很大的不便。
ASP上传,有无组件上传和组件上传两种
无组件上传可以在数据库中建立一个字段类型为OLE对象的字段,然后通过写代码上传。
如楼主有需要,可在此回复。
文件1.上传界面文件 upload.htm
<html>
<head>
<meta
http-equiv="Content-Language" content="zh-cn">
<meta
http-equiv="Content-Type" content="text/html;
charset=gb2312">
<title>文件上传</title>
</head>
<body>
<form
method="POST" action="SaveFile.asp">
文件上传:<input type="file"
name="file" size="42"> <input type="submit" value="提交"
name="bb">
</form>
</body>
</html>
文件2.保存上传文件
SaveFile.asp
<%
dim file,filename,houzui
file =
Request.Form("file")
if file=""
then
response.write"<script>alert('请选择要上传的文件!');window.location.href='upload.htm';</script>"
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"<script>alert('图片上传成功!');window.location.href='upload.htm';</script>"
else
response.write"<script>alert('不允许上传"
& houzui &
"的格式!');window.location.href='upload.htm';</script>"
end if
end
if
%>
希望对你有用
<meta http-equiv="Content-Type" content="text/html; 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 "<script>alert(""ok"");location.href=""upload.asp""</script>"
else
response.write "<script>alert(""请上传20kb至30kb之内的图片"");location.href=""upload.asp""</script>"
end if
end if
%>
<!DOCTYPE html>
<html>
<head>
<title>编辑</title>
<meta name="keywords" content="编辑">
<meta name="description" content="编辑">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="edit.css" charset="utf-8">
<meta name="viewport" content="width=10,initial-scale=1,user-scalable=no">
<meta name="applicable-device" content="pc,mobile">
</head>
<body>
<form id="form1" action="upload.asp" method="post" enctype="multipart/form-data">
<label id="label1">选择图片
<input id="xzwj" type="file" name="img">
</label>
<input type="submit" name="ok" value="上传">
</form>
<!--------------下面是把图片显示出来------------------->
<div id="img_div"><!--------------创建一个div把图片显示区域定位一下------------------->
<%
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
%>
<div id="dbox">
<div id="box11">
<img id="box11_img" onclick="cimg(this)" src="../../pic/<%=rs2("img_name")%>.jpg">
</div>
<a href="upload.asp?sc=<%=rs2("id")%>&page=<%=page%>" title="删除图片">
<div id="quan">
<div id="x1"></div>
<div id="x2"></div>
</div>
</a>
</div>
<%
else
exit for
end if
rs2.movenext
next
%>
</div>
<div id="fenye">
<button><%=page%></button>
<%
a=page-1
b=page+1
if a<0 or a=0 then
%>
<button>上一页</button>
<%
else
%>
<a href="upload.asp?page=<%=a%>"><button>上一页</button></a>
<%
end if
%>
<%
if b>rs2.pagecount then
%>
<button>下一页</button>
<%
else
%>
<a href="upload.asp?page=<%=b%>"><button>下一页</button></a>
<%
end if
%>
</div>
<%
rs2.close
set rs2=nothing
conn.Close
Set conn = Nothing
%>
<script>
text=window.parent.document.getElementById("text");
bbb=window.parent.window.getSelection();
function cimg(obj){
aaa=bbb.toString();
imgSrc=obj.src;
imgSrc=imgSrc.split("\/pic\/");
imgSrc=imgSrc[1];
imgSrc="$yuming$pic\/"+imgSrc;
window.parent.document.execCommand("insertText", false,"<p align=\"center\"><img src=\""+imgSrc+"\""+" alt=\"xxxx\""+">"+"<\/p>")
}
</script>
</body>
<html>