Web端打开文件选择和保存对话框

在C# web应用程序页面上如何弹出一个打开文件的对话框
private    void    FileDownload(string    FullFileName)           
         
FileInfo    DownloadFile      new    FileInfo(FullFileName);                   
Response.Clear();           
Response.ClearHeaders();           
Response.Buffer=false;           
Response.ContentType= "application/octet-stream";           
Response.AppendHeader( "Content-Disposition ","attachment;filename="            +HttpUtility.UrlEncode(DownloadFile.FullName,System.Text.Encoding.UTF8));                       
Response.AppendHeader( "Content-Length",DownloadFile.Length.ToString());
Response.WriteFile(DownloadFile.FullName);           
Response.Flush();           
Response.End();           
}


总体介绍

文件的选择、保存对话框,使用Java 很容易达成。

如果想在Web端使用的话,可以用Applet 达成。

但如果想使用HTML, js 达成的话,也是可以的。不过

web程序对客户机的文件进行读写是不安全的。ActiveXObject是IE特有的。这种东西本身就是不安全的.


文件选择框通用方式

最常用的就是使用如下方式:
  1. <input type="file" />  
<input type="file" />
这是HTML的标签,基本适用所有的浏览器。产生的效果是带有一个文本框和一个浏览按钮。(在 各浏览器的实际效果可能不一样)

点击"浏览" 按钮就可以打开文件选择的dialog 了, 选择文件后, 文件路径就保存在这个 input 的 value的属性里了。如下例子:

  1. <!--Add by oscar999-->  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
  3. <HTML>  
  4. <HEAD>  
  5. <TITLE> New Document </TITLE>  
  6. <META NAME="Author" CONTENT="oscar999">  
  7. <script>  
  8.   function getSelectFile()  
  9.   {  
  10.       var fileName = document.getElementById("fileSelect").value;  
  11.       alert(fileName);  
  12.   }  
  13. </script>  
  14. </HEAD>  
  15.   
  16. <BODY>  
  17.  <input id="fileSelect" type="file" />  
  18.  <input value="Get File" type="button" onclick="getSelectFile();"/>  
  19. </BODY>  
  20. </HTML>  
<!--Add by oscar999-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Author" CONTENT="oscar999">
<script>
  function getSelectFile()
  {
      var fileName = document.getElementById("fileSelect").value;
      alert(fileName);
  }
</script>
</HEAD>

<BODY>
 <input id="fileSelect" type="file" />
 <input value="Get File" type="button" οnclick="getSelectFile();"/>
</BODY>
</HTML>

文件保存对话框

你可能会问,既然选择对话框有了, 为什么还需要保存的对话框呢?
因为在选择对话框里,不能选择(或输入)一个不存在文件名,所以这对于保存来说不适用。
1. 方式一: 使用ActiveX控件,仅支持 IE
  1. <!--Add by oscar999-->  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
  3. <HTML>  
  4. <HEAD>  
  5. <TITLE> New Document </TITLE>  
  6. <META NAME="Author" CONTENT="oscar999">  
  7. <script>  
  8.   function  saveFile()    
  9.   {    
  10.       fileDialog.CancelError=true;    
  11.       try{    
  12.        fileDialog.Filter="HTM   Files   (*.html)|*.html|Text   Files   (*.txt)|*.txt";    
  13.        fileDialog.ShowSave();    
  14.       }    
  15.       catch(e){}    
  16.   }    
  17. </script>  
  18. </HEAD>  
  19.   
  20. <BODY>  
  21.  <object   id="fileDialog"   width="0px"   height="0px"   classid="clsid:F9043C85-F6F2-101A-A3C9-08002B2F49FB"     codebase="http://activex.microsoft.com/controls/vb5/comdlg32.cab">    
  22.  </object>    
  23.   <input   type=button   value="Save"   onclick="saveFile()"  
  24. </BODY>  
  25. </HTML>  
<!--Add by oscar999-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Author" CONTENT="oscar999">
<script>
  function  saveFile()  
  {  
      fileDialog.CancelError=true;  
      try{  
       fileDialog.Filter="HTM   Files   (*.html)|*.html|Text   Files   (*.txt)|*.txt";  
       fileDialog.ShowSave();  
      }  
      catch(e){}  
  }  
</script>
</HEAD>

<BODY>
 <object   id="fileDialog"   width="0px"   height="0px"   classid="clsid:F9043C85-F6F2-101A-A3C9-08002B2F49FB"     codebase="http://activex.microsoft.com/controls/vb5/comdlg32.cab">  
 </object>  
  <input   type=button   value="Save"   οnclick="saveFile()"
</BODY>
</HTML>

2. 使用document.execCommand('SavaAs'), 仅支持 IE
  1. <!--Add by oscar999-->  
  2. <html>  
  3. <head>  
  4.    <title> New Document </title>  
  5. </head>  
  6. <body>  
  7.    <input type="button" value="Save" onclick="document.execCommand('SaveAs')">  
  8. </body>  
  9. </html>  
<!--Add by oscar999-->
<html>
<head>
   <title> New Document </title>
</head>
<body>
   <input type="button" value="Save" οnclick="document.execCommand('SaveAs')">
</body>
</html>

除了IE,其他浏览器貌似都没有打开保存的窗口,用替代方案,直接填入路径:
  1. <!--Add by oscar999-->  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
  3. <HTML>  
  4. <HEAD>  
  5. <TITLE> New Document </TITLE>  
  6. <META NAME="Author" CONTENT="oscar999">  
  7. <script>    
  8.     function   smt(){    
  9.         path   =   prompt("Please Input Path","");   
  10.     }     
  11. </script>  
  12. </HEAD>  
  13.   
  14. <BODY>  
  15.   <input   type="button"   value="Save"   onclick="smt()">     
  16. </BODY>  
  17. </HTML>  
<!--Add by oscar999-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Author" CONTENT="oscar999">
<script>  
	function   smt(){  
		path   =   prompt("Please Input Path",""); 
	}   
</script>
</HEAD>

<BODY>
  <input   type="button"   value="Save"   οnclick="smt()">   
</BODY>
</HTML>


获取路径后的处理

获取保存路径后,如何创建文件可以参考:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值