asp如何实现文件上传功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp如何实现文件上传功能相关的知识,希望对你有一定的参考价值。

我下了个很简单的asp+access的电子商务网站,这个网站其他方面都好的,就是无法实现图片上传功能,网站的后台有说明的,说要注册一个dll组件,我按他的方法找了,可是找不到那个组件,哪位高手可以帮我看看啊!
我不太懂的,谁能帮我看看,我的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方式将数据存入相应的字段就可以了。

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

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

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

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

如楼主有需要,可在此回复。本回答被提问者采纳
参考技术B 文件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">&nbsp;<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
%>

希望对你有用

参考技术C <%Response.Charset="gb2312"%>
<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>
参考技术D 你登陆网站后台看一下,是否支持无组件上传,如果支持,可以选择无组件上传。如果不允许选择,你在百度上搜一下DLL组件。或者你把说明中发出来,我给你看看是什么组件。

急!急!急!asp.net ckeditor3.5.3如何实现添加图片上传功能!代码越详细越好,最好可以直接运行的!

各位大侠们!请有知道的赐教一下啦!我真的很急!

ckeditor没有具备上传图片功能,只有与ckfinder工具集成,才能实现,如果需要可以问我追问

请问要如何才能将两者集成呢?网上的一些答案都不能正常运行,您可以指导一下吗?谢谢

追答

http://ckfinder.com/demo#你先学习一下

参考资料:http://ckfinder.com/demo#你先学习一下

追问

请问您有配置好的示例代码吗?如果有的话,可以方便发一份给我参考下吗?我的邮箱地址是1146289524@qq.com,非常感谢了!

追答

1,将ckeditor解压打开,打开_Samples,将ckeditor文件夹拷贝项目中的根目录下,把bin放在根目录下

2,将ckfinder解压,ckfinder文件夹拷贝项目中的根目录下,把bin放在根目录下,把_sample,_source,help文件夹删除掉,(注:没有用)

3,在ckeditor文件下找到config.js 打开,找到
在CKEDITOR.editorCongig=function(config)

//填写以下内容,图片,flash路径
config.uiColor = '#F7F8F9'
config.scayt_autoStartup = false
config.language = 'zh-cn'; //中文
config.filebrowserBrowseUrl = 'ckfinder/ckfinder.html';
config.filebrowserImageBrowseUrl = 'ckfinder/ckfinder.html?Type=Images';
config.filebrowserFlashBrowseUrl = 'ckfinder/ckfinder.html?Type=Flash';
config.filebrowserUploadUrl = 'ckfinder/core/connector/aspx/connector.aspx?command=QuickUpload&type=Files';
config.filebrowserImageUploadUrl = 'ckfinder/core/connector/aspx/connector.aspx?command=QuickUpload&type=Images';
config.filebrowserFlashUploadUrl = 'ckfinder/core/connector/aspx/connector.aspx?command=QuickUpload&type=Flash';


4,在ckfinder文件下找到config.ascx文件,打开
1)把public overrider bool ChekcAuthentication()return false;改为:return true;
2)public overrider void SetConfig()BaseUrl = "~/ckfinder/userfiles/";

5,在页面中head标签内写入:

如果有母版页,在母版页中写
--注:单纯的配置,6,7可以不要,但是一旦要入数据库中,就要配置6.7步骤

6,在Default.aspx页面中,写入

7,在web.config文件中,在system.web下写

8,在Default.aspx页面中添加

CKEDITOR.replace('', skin: 'kama' );
(用ckfinder文件下skins文件下kama文件下的,skin.js,样式)

参考资料:这是我写的步骤,看你能配置成功不

追问

您好,我按照您说的步骤进行配置,但是它报错,错误信息“行: 25
错误: 例外被抛出且未被接住”,调试显示“throw '[CKEDITOR.editor.replace] The element with id or name "'+b+'" was not found.';”这一行错误,我不明白,请问这个是什么错误啊?谢谢您!

追答

我这样做,没有错误,你放的路径和我的路径一致吗,我写的这个,是能入到数据库中的,你看仔细了吗

参考技术A 不太清楚

以上是关于asp如何实现文件上传功能的主要内容,如果未能解决你的问题,请参考以下文章

asp.net如何实现文件的上传和下载

如何实现同时上传多个文件

js 大文件分片上传处理如何实现?

急!急!急!asp.net ckeditor3.5.3如何实现添加图片上传功能!代码越详细越好,最好可以直接运行的!

如何在Web下实现选择文件夹功能

ASP.net 如何实现上传图片的调整和裁减