注册 登录
编程论坛 ASP技术论坛

我上传图片怎么传不了呀?

longxuanxuan 发布于 2010-05-20 11:02, 677 次点击
程序代码:
<%
str
=request.form("file1")

kname
=mid(str,instrrev(str,"."))
if kname=".jpg" or kname=".gif" then
response.write kname
'str= Request.BinaryRead(Request.TotalBytes)
'
str="c:\web\123.gif"
response.write(str)
set obj=server.CreateObject("adodb.stream")
obj.Type
=1
obj.open
obj.LoadFromFile str  
'读取文件内容
d1=cstr(date())
d2
=replace(cstr(time()),":","")
x1
=server.MapPath("xx")     '上传在xx文件夹下去
x2=replace(x1,"\","/")   '将本地\转换成/
response.write x2&"/"&d1&d2&kname  '看一下文件名和路径
obj.SaveToFile x2&"/"&d1&d2&kname,2  '输出文件内容到 文件
response.write "<script> alert('sdafasd');</script>"
else
response.Redirect(
"examload.html")
end if


%>
obj.LoadFromFile str  '读取文件内容     说这行有错误         
4 回复
#2
gupiao1752010-05-20 11:15
obj.LoadFromFile str
把变量str输出来看看,str是否把文件路径和完整文件名(扩展名)都包含了!
#3
longxuanxuan2010-05-20 17:31
str  那没有问题
#4
gupiao1752010-05-20 19:26
    我对上传具体过程不是非常清楚!
    其原理就是用Request.BinaryRead取得客户端普通文件转化成二进制数据,然后再通过stream对象对二进制处理,最后把客户端传过来的二进制数据变成普通的文件!当然实际的过程肯定没有这么简单!
    而你的错误是:
    str=request.form("file1") ‘这个获取的是普通字符!
    而obj.LoadFromFile str '是写二进制流的!用二进制的去写普通字符类型的,怎么能?
     
    如果你对上传的研究感兴趣,而不想用别人的组件的话,建议下个无组件上传类,认真看里面的代码,随便什么都行,越简单越好!
#5
longxuanxuan2010-05-21 08:56
谢谢拉
1