8988(晓月)这是我的问题!帮忙看看!100分先!

Bullforg 2002-05-08 04:20:08
我现在可以把6个字段,对应6个目录,也可以该成1个对应1个
但是我现在需要上传两个,存在同一个目录下在库中有两个字段,分别存放两个地址
-------------------------------------------------------------------------
现在我修改代码,发现一切正常,就是第二个上传文件信息,不能把文件存到服务器上,数据库可以保存路径。
你看代码如何修改,在下面代码中有不明白的地方
for i=0 to upload.count-1
mime=Upload.Item(f(i)).Item("Type")
if mime<>"Text" then
name=Upload.Item(f(i)).Item("FileName")
name=UploadFilePath & "\" & f(i) & "\" & ID & "_" & name
size=Upload.Item(f(i)).Item("Size")
savefile=Server.MapPath(name)
-------------------------------------------------------------------------
全部程序:
Response.Buffer=TRUE
Response.Clear
'读取数据总长度
ByteCount=Request.TotalBytes
'定义一个结构,用完之后要用 Set Upload=nothing清除
Set Upload=CreateObject("Scripting.Dictionary")
formnum=0
if ByteCount>0 then
'读取表单的所有内容
BinForm=Request.BinaryRead(ByteCount)
'取出字段分隔串,即开如:-----------------------------7d02a0338e9 的字串
FormID=MidB(BinForm,1,InstrB(BinForm,ChrB(13))-1)
'搜索字段结束串位置,结束串为:-----------------------------7d02a0338e9--
FormEnd=InstrB(1,BinForm,FormID & ChrB(45) & ChrB(45))
BinStart=1 '设置开始串位置为1
'为以下查找作准备
Contentstr=ToBin("Content-Disposition")
Do Until BinStart=>FormEnd '如果是结束位则退出
Set UpLoadAttrib=CreateObject("Scripting.Dictionary") '定义一个对象存放参数和值
Binbeg=InstrB(BinStart,BinForm,Contentstr) '查找“Content-Disposition”的字串位置
Binbeg=InstrB(Binbeg,BinForm,ToBin("name="))+6 '搜索“name=”字串后跳过“name="表单名"”中第一个引号
Binend=InstrB(Binbeg,BinForm,ChrB(34)) '搜索“name="表单名"”中最后一个引号
FormName=Tostr(MidB(BinForm,Binbeg,BinEnd-BinBeg)) '取出表单名
BinStart=BinEnd+1 '设置下一个搜索指针
Binbeg=InstrB(BinStart,BinForm,ToBin("filename=")) '搜索“filename=”字串以判断是否是File类型表单
Binend=InstrB(BinStart,BinForm,FormID) '搜索下一个字段分隔符以确定上一个搜索是否是File表单内容
if BinBeg<>0 and Binbeg<BinEnd then '判断“filename=”字串是否存在,且在本表单范围内
Binstart=Binbeg+10 '跳过“filename="文件名"”在第一个引号
BinEnd=InstrB(BinStart,BinForm,ChrB(34)) '搜索“filename="文件名"”中最后一个引号
UploadFileName=Lcase(Tostr(MidB(BinForm,BinStart,BinEnd-BinStart))) '取文件名
Binbeg=InstrB(BinEnd,BinForm,ToBin("Content-Type:"))+14 '搜索“Content-Type:”字串,并跳过它
BinEnd=InstrB(Binbeg,BinForm,ChrB(13)) '搜索回车符以确定文件类型串的长度
UpLoadType=ToStr(MidB(BinForm,Binbeg,BinEnd-Binbeg)) '取出文件类型串
Binbeg=BinEnd+4 '跳过“0D 0A 0D 0A”指向表单值的开始位置
BinEnd=InstrB(BinBeg,BinForm,FormID)-2 '搜索下一个字段开始位置,并后退“0D 0A”两位,以指向表单值结束位置
FileSize=BinEnd-BinBeg '求出值的长度
if FileSize>MaxSize then '判断值的长度是否超过最大长度
FileSize=-1 '如果超过,则设长度为-1
Value=""
elseif FileSize<1 then
FileSize=0
Value=""
else
'Value=MidB(BinForm,BinBeg,FileSize) '取出值
Value=""

end if
formnum=formnum+1
temp=instrRev(UploadFileName,"\")
UploadFileName=mid(UploadFileName,temp+1)

Else
BinBeg=InstrB(BinStart,BinForm,ChrB(13))+4 '确定非文件类型表单的值的开始位置
BinEnd=InstrB(BinBeg,BinForm,FormID)-2 '确定结束位置
FileSize=BinEnd-BinBeg '求出值的长度
Value=ToStr(MidB(BinForm,BinBeg,FileSize)) '取出值并转化为标准字串
UpLoadType="Text" '定义保存类型为“Text”
UpLoadFileName=FormName '设置文件名为表单名
End if
UploadAttrib.Add "Start",BinBeg
UpLoadAttrib.Add "Size",FileSize '将取出数据存入对象中
UpLoadAttrib.Add "Value",Value
UpLoadAttrib.Add "Type",UploadType
UpLoadAttrib.Add "FileName",UploadFileName
UpLoad.Add FormName,UploadAttrib
set UploadAttrib=nothing
BinStart=BinEnd+2 '指向下一个字段开始处
Loop
'------------------------------------------------------------------------------------------

End if

errs=""
if formnum=0 then
errs="没有上传文件"
else
'将信息保存到数据库
'--------------------------------------------------------------
title=replace(Upload.Item("title").Item("Value"),"'",chr(1))
cont=replace(Upload.Item("cont").Item("Value"),"'",chr(1))
putdate=replace(Upload.Item("putdate").Item("Value"),"'",chr(1))
if title="" or cont="" or putdate="" then
response.write "<script language='javascript'>"
response.write "alert('请输入完整信息');" & Chr(13)
response.write "history.go(-1)" & Chr(13)
response.write "</script>" & Chr(13)
response.end
end if
Set rs=Server.Createobject("ADODB.Recordset")
sql="select * from news where title='"&title&"'"
rs.open sql,conn,1,1
if not rs.bof or not rs.eof then
response.write "<script language='javascript'>"
response.write "alert('输入有误,该新闻已存在!');" & Chr(13)
response.write "history.go(-1)" & Chr(13)
response.write "</script>" & Chr(13)
response.end
end if
rs.close
rs.Open "Select * From news",conn,1,3
rs.addnew
rs.update
rs("title")=replace(Upload.Item("title").Item("Value"),"'",chr(1))
rs("cont")=htmlencode2(replace(Upload.Item("cont").Item("Value"),"'",chr(1)))
rs("putdate")=replace(Upload.Item("putdate").Item("Value"),"'",chr(1))
if replace(Upload.Item("image").Item("FileName"),"'",chr(1))<>"" then
rs("image")=UploadFilePath & "\" & replace(Upload.Item("image").Item("FileName"),"'",chr(1))
end if
if replace(Upload.Item("mpeg").Item("FileName"),"'",chr(1))<>"" then
rs("mpeg")=UploadFilePath & "\" & replace(Upload.Item("mpeg").Item("FileName"),"'",chr(1))
end if
rs.update
rs.close
conn.close
set rs=nothing
set conn=nothing

'将图片存入文件夹。
f=Upload.Keys

Set sStream = Server.CreateObject("ADODB.Stream") '建立Stream对象
Set dStream = Server.CreateObject("ADODB.Stream") '建立Stream对象
dStream.mode=3 '设置为读/写方式
dStream.Type = 1 '设置数据类型为二进制
dStream.Open '打开Stream对象
sStream.mode=3 '设置为读/写方式
sStream.Type = 1 '设置数据类型为二进制
sStream.Open '打开Stream对象
sStream.write BinForm
for i=0 to upload.count-1
mime=Upload.Item(f(i)).Item("Type")
if mime<>"Text" then
name=Upload.Item(f(i)).Item("FileName")
name= f(i) & "\"& name
size=Upload.Item(f(i)).Item("Size")
savefile=Server.MapPath(name)
'response.write savefile & "<br>"
'response.end
if size=-1 then
errs=errs & "<br>" & name & "已超过" & MaxSize/1024 & "K,该文件上传失败。"
elseif size=0 then
errs=errs & "<br>" & name & "没有内容或已损坏,该文件上传失败。"
else
filestart=Upload.Item(f(i)).Item("Start")
sStream.Position=filestart-1
sStream.CopyTo dStream,size

dStream.SaveToFile savefile ,2
errs=errs & "<br>" & name & "已成功上传。"
end if
'response.write errs & "<br>"
end if
next
response.write "<div align='center'>产品信息填加成功!<a href='productsQue.asp'>返回</a></div>"
sStream.Close '关闭Stream对象
set sStream=nothing '释放Stream对象
dStream.Close '关闭Stream对象
set dStream=nothing '释放Stream对象
end if
set upload=nothing
%>

<!-- 晓月-8988 工作室制作 898801@sina.com -->
----------------------------------------------------
其中字段有ID TITLE CONT PUTDATE IMAGE(上传图片路径) MPEG(上传影象路径) MPEGTYPE(上传影象类型)
----------------------------------------------------
在代码中使用的循环不理解,帮忙!
...全文
31 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
8988 2002-05-09
for i=0 to upload.count-1
....

next

将这个循环改为两个独立的保存文件的代码。
回复
Bullforg 2002-05-09
你发现没有在程序中向数据库写入
rs("xxx")=xxx
其中,上传文件无论是几个,向数据库写入地址的代码都只有一句
意思就是程序中有运用了循环,有几个上传文件就循环几次
再就是STREAM SAVETO FILE只做一次写入,也就是第二个文件上传不上去
一上传第二个文件就报错,单独上传第一个文件没问题!
回复
aocool 2002-05-08
你的程序好长噢,我没有看完,不过你是说你的文件不能保存并不是数据库不能保存,这样看来程序应该没有问题。
如果文件不能上传的话。你看看服务器有没有给权限。
关于上传权限设定你知道的吧。如果不知道来问我。QQ:20552480
回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2002-05-08 04:20
社区公告
暂无公告