ASP打开模式窗口上传文件


关键词

模式窗口 文件上传 ASP

摘要

本文介绍在JavaScript中使用模式窗口来上传文件,showModalDialog是打开模式窗口的函数。


在父窗口中,我们有一个上传文件的按钮,点击它,可以打开上传文件的模式窗口。还一个文本框,用于接收模式窗口的返回值(returnValue)。这个返回值其实就是文件上传后的虚拟路径。

 <tr height="60">
  <td>图片:</td>
  <td><input type="text" name="artImage" id="artImage" size="56" value="" />
   <input type="button" value="上传..." onclick="javascript:UploadImg('artImage')">
   <p>如果有相关图片,请在此上传</td>
 </tr>

点击上传按钮,是调用了一个JavaScript函数,内容如下:

 <script type="text/javascript">
 <!--
  //$选择图片
 function UploadImg(targetId){
  var windowReturnValue;
  var TargetArea=document.getElementById(targetId);
  if(TargetArea!=null){
   windowReturnValue=window.showModalDialog('config/UploadFile.asp',window,'dialogWidth=430px;dialogHeight=250px;toolbar:no');
   if(windowReturnValue == undefined){
    windowReturnValue=window.returnValue;
   }
   if(windowReturnValue!=null){TargetArea.value=unescape(windowReturnValue);}//把返回值插入到targetId
  }else{alert("Alert: targetId["+targetId+"] was not existing in UploadImg(targetId)!");}
 }
 //-->
 </script>

在打开的模式窗口中,调用的是config/UploadFile.asp。在这个页面,注意控制一下权限,否则会有上传漏洞,当然,这是题外话了。我们看看这个UploadFile.asp中如何处理返回值的问题。

<SCRIPT LANGUAGE="JavaScript">
<!--
 function dook(){
  if(document.formUpload.filepath.value!=''){
   //parent.window.returnValue=document.formUpload.filepath.value;
   if(window.opener != undefined){
   //webkit
   window.opener.returnValue=document.formUpload.filepath.value;
   }else{
    window.returnValue=document.formUpload.filepath.value;
   }
   window.close();
  }
  else{
   alert('请先上传图片!');
  }
 }
//-->
</SCRIPT>
<A HREF="javascript:dook()">确定</A>

点击确定时,将当前窗口中获取到的文件路径,设置为window.returnValue或window.opener.returnValue。因为在不同的浏览器内核中,处理方式不一样。如webkit核心(Chrome、Sogou高速浏览器、Safari等使用该核心)要使用window.opener.returnValue。而IE、Firefox等浏览器则使用window.returnValue。


还要注意,因为UploadFile.asp页面是在模式窗口中打开的,所以,在某些浏览器中,上传提交按钮点击后会再打开一个窗口。这不是我们想要的,我们得做如下的控制:

<script language="javascript"> 
 window.name="winSelf"
</script>
</head>
<body>
<p>&nbsp;

<form method="POST" enctype="multipart/form-data" action="UploadFile.asp" name="formUpload" target="winSelf">

关于ASP打开模式窗口上传文件,本文就介绍这么多,希望对您有所帮助,谢谢!

 

要饭二维码

洪哥写文章很苦逼,如果本文对您略有帮助,可以扫描下方二维码支持洪哥!金额随意,先行谢过!大家的支持是我前进的动力!

文章的版权

本文属于“洪哥笔记”原创文章,转载请注明来源地址:ASP打开模式窗口上传文件:http://www.splaybow.com/post/asp-showmodaldialog-upload-file.html

如果您在服务器运维、网络管理、网站或系统开发过程有需要提供收费服务,请加QQ:8771947!十年运维经验,帮您省钱、让您放心!
亲,如果有需要,先存起来,方便以后再看啊!加入收藏夹的话,按Ctrl+D

« 让模式窗口提交表单不要打开新窗口 JavaScript禁止弹出右键菜单 »