求助!简单又不简单的问题!

yiyioo 2004-08-27 09:16:14
我在做上传的时候遇到一个问题!
假如用户上传的文件已经存在,则提示“文件已经存在,是否覆盖?”
如果用户选择“是”,则把文件覆盖,并且把这个上传记录写进数据库,“否”则取消,不进行数据库操作!!
如果这么写:
if myfile.fileexists(server.MapPath(formpath&file.filename)) then
response.write "<script language=vbscript>" & vbcrlf
response.write "if msgbox(""您要上传的文件已经存在,是否覆盖"",vbyesno,""覆盖确认!"")=7 then" & vbcrlf
response.write "location.href=""tmp.asp?flag=1""" & vbcrlf
'tmp.asp只有一句话,“上传已取消!”
response.write "end if</script>"

file.saveas server.MapPath(formpath&file.filename)
‘下面是数据库操作
…………………………………………………………

这种写法跟直接写<script language="vbs">………………</script>是一样的~

粗看上去没问题,实际当用户选择“否”时,它依然把文件覆盖,并进行了数据库操作,
原因是asp 先编译了!
假如把脚本写进另一个页面,在本页用server.execute去执行那个脚本,我想返回个值,可是又不能用reqquest获取(error:调用 BinaryRead 后不能使用一般 Request 收集)
用session("flag")="ok/flase"来传吧,在脚本里直接写<%session("flag")="ok/flase"%>又不行,其他我就不会写了。
用asp函数写可以方便的使用session,可是又不知道用户选择“是”还是“否”
如果让文件保存和数据库操作都在另一个页面也不可行,因为执行上传操作的页面,它的前一个页面一定要包含[enctype="multipart/form-data"],
如果写在server.execute的那个页面里好象也不行,
好象还尝试过很多,但都失败了,
现在我好象有点无计可施了,所以请大家帮忙啊,怎么实现这个东东
先谢谢了!
...全文
147 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cesheng 2004-08-30
  • 打赏
  • 举报
回复
同意 tianjy(老田) 的做法。。。
yiyioo 2004-08-30
  • 打赏
  • 举报
回复
分成三个页面还是有问题,
传个路径过去,没效果,
真麻烦啊
yiyioo 2004-08-30
  • 打赏
  • 举报
回复
最后还是老田给了我一个办法
就是先把文件上传到一个临时文件夹,把文件信息用session保存起来
判断上传的文件在目标文件夹是否存在,存在询问是否覆盖,
如果覆盖则把文件从临时文件夹移到目标文件夹,删除临时文件夹的内容
否则把临时文件夹清空
现在结帐
yiyioo 2004-08-27
  • 打赏
  • 举报
回复
也就是说这种做发是可以实现的喽
那样的话
我就好好把它完成
tianjy 2004-08-27
  • 打赏
  • 举报
回复
这个问题我疑惑好久了~~~~~~~~~第一个页面输入~第二个接受到form并做判断~那第三个怎么接收form并做处理?


我有两种做法
一、第二个使用<input type=hidden name="test" value="<%=value%>">这样的形式,仍然用form传给第三个页面
二、
第二个页面
session("test")=request.form("test")
第三个页面
test=session("test")
也就完成了传递
yiyioo 2004-08-27
  • 打赏
  • 举报
回复
to:butcher2002(星海之涛~自己挣钱两人花=幸福)
如果第三个页面不是form传值
上传操作是否能成功
你好象做过
如果不行
省得我再瞎高了
butcher2002 2004-08-27
  • 打赏
  • 举报
回复
提个问题~存在session里~哪form的内容怎么从接收的页再转到新的处理页呢?

比如要上传的问题~怎么转过去?

这个问题我疑惑好久了~~~~~~~~~第一个页面输入~第二个接受到form并做判断~那第三个怎么接收form并做处理?
yiyioo 2004-08-27
  • 打赏
  • 举报
回复
你是说重新刷新本页
这样的话,估计也不行
我先试试
ryuginka 2004-08-27
  • 打赏
  • 举报
回复
up
aspgreener 2004-08-27
  • 打赏
  • 举报
回复
楼上的已经给出思路了!~~
自己慢慢琢磨吧~~
tianjy 2004-08-27
  • 打赏
  • 举报
回复
你把你需要的数据都先存到session中
然后response.write "<a href=confirm.asp?action=ok>覆盖</a>"
response.write "<a href=confirm.asp?action=no>取消</a>"

confirm.asp文件中根据request.querystring("action")的不同执行不同的操作就可以了
yiyioo 2004-08-27
  • 打赏
  • 举报
回复
那怎么询问啊
不用对话框用什么询问啊?
能讲清楚点吗?
aspgreener 2004-08-27
  • 打赏
  • 举报
回复
你可以不要用对话框啊!
直接在页面上询问是否覆盖!
这时可以设一个标识
在用条件语句判断执行
file.saveas server.MapPath(formpath&file.filename)

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧