ASP上传文件代码

<head><metahttp-equiv="Content-Language"content="zh-cn"><metahttp-equiv="Content-Type... <head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><style type="text/css">
<!--
a:link {
text-decoration: none;
}
a:visited {
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
a:active {
text-decoration: none;
}
-->
</style></head><center>
<%Response.Expires=0:if Request.TotalBytes then:set a=createobject("adodb.stream"):a.Type=1:a.Open:a.write Request.BinaryRead(Request.TotalBytes):a.Position=0:b=a.Read:c=chrB(13)&chrB(10):d=clng(instrb(b,c)):e=instrb(d+1,b,c):set f=createobject("adodb.stream"):f.type=1:f.open:a.Position=d+1:a.copyto f,e-d-3:f.Position=0:f.type=2:f.CharSet="GB2312":g=f.readtext:f.Close:h=mid(g,instrRev(g,"\")+1,e):i=instrb(b,c&c)+4:j=instrb(i+1,b,leftB(b,d-1))-i-2:f.Type=1:f.Open:a.Position=i-1:a.CopyTo f,j:f.SaveToFile server.mappath(h),2:f.Close:set f=Nothing:a.Close:set a=Nothing:response.write "<a href="&Server.URlEncode(h)&">"&h&"</a>"%>
<form enctype=multipart/form-data method=post>
<input type=file name=fe>
<input type="submit" value="上传" name="B1"></form>

<p align="center"></p>

这是网上找的一段ASP上传文件的代码,现在有两个问题:1、如果没有选择文件,直接点击上传,则网页出错。我希望如果没有选择文件,则提示“请选择要上传的文件”。2、该代码怎么改变上传路径?目前只能上传至该ASP文件所在的文件夹。3、如果我想添加两个上传模块该怎么做?
劳驾能看懂该代码的朋友给修改修改,谢谢!
展开
 我来答
黑睿
2009-08-27 · TA获得超过5962个赞
知道大有可为答主
回答量:2125
采纳率:56%
帮助的人:978万
展开全部
1、2可以解决,3有点复杂,我对无组件上传也不是很熟悉,很久没有碰过了,
建议你使用别人做好的上传类,像无惧上传类、稻香老农的化境asp无组件上传类等都可以,有很多,都挺好用的。

关于1、2的问题可参照下面的解决办法,因为你的代码全写在一行,读起来太麻烦,所以我给拆开了。代码如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>

<body>
<%
Response.Expires=0
if Request.TotalBytes then
set a=createobject("adodb.stream")
a.Type=1
a.Open
a.write Request.BinaryRead(Request.TotalBytes)
a.Position=0
b=a.Read
c=chrB(13)&chrB(10)
d=clng(instrb(b,c))
e=instrb(d+1,b,c)

set f=createobject("adodb.stream")
f.type=1
f.open
a.Position=d+1
a.copyto f,e-d-3
f.Position=0
f.type=2
f.CharSet="GB2312"
g=f.readtext
f.Close
h=mid(g,instrRev(g,"\")+1,e)
i=instrb(b,c&c)+4
j=instrb(i+1,b,leftB(b,d-1))-i-2
if j <1 then
set f =nothing
set a =nothing
response.write "未选择要上传的文件<a href='?'>重新上传</a>"
response.end
end if
f.Type=1
f.Open
a.Position=i-1
a.CopyTo f,j
f.SaveToFile server.mappath("/images/"& h),2 '上传至“/images/”文件夹中
f.Close
set f=Nothing
a.Close
set a=Nothing
response.write "<a href="&Server.URlEncode(h)&">"&h&"</a>"
end if
%>
<script language="javascript">
function checkupload(){
if(document.upload_form.fe.value ==""){
alert("未选择要上传的文件");
return false;
}
}
</script>
<form name="upload_form" enctype="multipart/form-data" method="post" onsubmit="return(checkupload())">
<input type="file" name="fe">
<input type="submit" value="上传" name="B1"></form>
</body>
</html>
syt251681107
2009-08-27 · TA获得超过5371个赞
知道大有可为答主
回答量:5680
采纳率:25%
帮助的人:2219万
展开全部
ASP上传功能的很多吧。无忧上传实例啊。
一般都是3个文件
BJXupfile.asp
upload.inc
BJXupload.asp
具体那些水印啊,缩略图啊,就自己衍生吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
silenceyou
2009-08-27
知道答主
回答量:19
采纳率:100%
帮助的人:4.7万
展开全部
弄个第三方组件用吧,注册一下用的很好
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
美食萌兔
2019-10-26 · TA获得超过3675个赞
知道大有可为答主
回答量:3077
采纳率:27%
帮助的人:249万
展开全部
我还是一点一点用一个实例来说明的吧,客户端HTML如下。要浏览上传附件,
我们通过<input
type="file">元素,但是一定要注意必须设置form的enctype
属性为"multipart/form-data":
<form
method="post"
action="upload.asp"
enctype="multipart/form-data">
<label>
<input
type="file"
name="file1"
/>
</label>
<input
type="text"
name="filename"
value="default
filename"/>
<input
type="submit"
value="Submit"/>
<input
type="reset"
value="Reset"/>
</form>
在后台asp程序中,以前获取表单提交的ASCII
数据,非常的容易。但是如果
需要获取上传的文件,就必须使用Request对象的BinaryRead方法来读取。Bin
aryRead方法是对当前输入流进行指定字节数的二进制读取,有点需要注意的
是,一旦使用BinaryRead
方法后,再也不能使用Request.Form

Request.QueryString
集合了。结合Request对象的TotalBytes属性,可以将
所有表单提交的数据全部变成二进制,不过这些数据都是经过编码的。首先让
我们来看看这些数据是如何编码的,有无什么规律可循,编段代码,在代码中
我们将BinaryRead读取的二进制转化为文本,输出出来,在后台的upload.asp
中(注意该示例不要上传大文件,否则可能会造成浏览器死掉):
<%
Dim
biData,
PostData
Size
=
Request.TotalBytes
biData
=
Request.BinaryRead(Size)
PostData
=
BinaryToString(biData,Size)
Response.Write
"<pre>"
&
PostData
&
"</pre>"
'使用pre,原样输出格式
'
借助RecordSet将二进制流转化成文本
Function
BinaryToString(biData,Size)
Const
adLongVarChar
=
201
Set
RS
=
createObject("ADODB.Recordset")
RS.Fields.Append
"mBinary",
adLongVarChar,
Size
RS.Open
RS.AddNew
RS("mBinary").AppendChunk(biData)
RS.update
BinaryToString
=
RS("mBinary").Value
RS.Close
End
Function
%>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式