首页 新闻 会员 周边 捐助

input file 由于浏览器安全性提高了所以获取不到正确的图片地址

0
悬赏园豆:30 [已解决问题] 解决于 2012-11-23 10:52

应该怎样写一个类似file的东西呢,就是页面上有一个type=button  然后点击就直接弹出一个文件选择框,选择完文件然后就返回一个正确的路径,请大神们帮忙,小弟菜鸟已经郁闷了一天了!

问题补充:

是类似的file是东西,不用<input type=file>   也就是说要替换掉这个控件,因为它已经获取不到正确的地址了,修改IE设置的方法是不可行的,因为作为开发人员知怎么去设置但是用户不会去设置。

半路使者的主页 半路使者 | 初学一级 | 园豆:41
提问于:2012-11-08 11:31
< >
分享
最佳答案
0

页面部分:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MulitFilesUpload.aspx.cs"    Inherits="WQT.WebUI.Jquery.MulitFilesUpload" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">   
<title>多文件上传</title>  
 <script type="text/javascript" src="../Lib/jquery-1.4.2.min.js"></script>
   <script type="text/javascript">   
    var fileIndex = 2;      
 var controlId = "file";      
 $(function() {        
   $("#btnAddNew").bind("click", function() {    
           $("#Container").append("<input type='file' name='"+controlId+fileIndex+"' />");           
                 fileIndex++;        
   });     
  });  
 </script>
</head>
<body>   
<form id="form1" runat="server" enctype="multipart/form-data">   
<div id="Container" style="width: 280px;">    
  <h3>多文件上传</h3>     
  <input type="file" name="file1" />     
  <a id="btnAddNew" href="#">添加项</a>  
 </div>  
 <div>        <asp:Button ID="btnSave" runat="server" Text="保存" OnClick="btnSave_Click" /> 
  </div> 
  </form>
</body>
</html>

后台:

namespace WQT.WebUI.Jquery{   
public partial class MulitFilesUpload : System.Web.UI.Page    {     
  private string _saveToPath = "~/Jquery/uploads/";  
  protected void Page_Load(object sender, EventArgs e)   
  {        
   if (IsPostBack)        
   {             
  _saveToPath = Server.MapPath(_saveToPath);   
        }   
    }     
  protected void btnSave_Click(object sender, EventArgs e)  
     {        
   int fileCount = Request.Files.Count;        
   string fileName = string.Empty;          
 string filePath=string.Empty;     
      for (int i = 0; i < fileCount; i++)      
     {            
   fileName = Request.Files[i].FileName;       
     filePath = _saveToPath + fileName.Substring(fileName.LastIndexOf("\\")+1);         
     Request.Files[i].SaveAs(filePath) ;        
   }    
   }
   }}

收获园豆:20
学学学习 | 菜鸟二级 |园豆:427 | 2012-11-08 11:39
其他回答(6)
0

你确定是安全性的问题吗?

收获园豆:10
sym_cn | 园豆:798 (小虾三级) | 2012-11-08 11:38

是安全性问题

支持(0) 反对(0) 半路使者 | 园豆:41 (初学一级) | 2012-11-08 12:10

@半路使者: 那就用第三方插件吧

支持(0) 反对(0) sym_cn | 园豆:798 (小虾三级) | 2012-11-08 13:24

@半路使者:  wydycg  这个设置你接受不了么?

支持(1) 反对(0) sym_cn | 园豆:798 (小虾三级) | 2012-11-08 13:25

@sym_cn:  修改IE设置的方法是不可行的,因为作为开发人员知怎么去设置但是用户不会去设置。

支持(0) 反对(0) 半路使者 | 园豆:41 (初学一级) | 2012-11-08 13:34

@半路使者:  那就用第三方吧。http://www.open-open.com/ajax/2_Upload.htm 

支持(0) 反对(0) sym_cn | 园豆:798 (小虾三级) | 2012-11-08 14:57
0

如果是做小练习的话 那么就用input的file就可以了

如果是商用的项目 那还是用jQuery封装好的上传插件吧,因为客户端浏览器兼容性 版本 突发情况你考虑肯定不够全,不是给个按钮 一传就能到服务器那么简单的

PS:input那个file上传alert看不到上传路径 但是能传到你指定的目录

oppoic | 园豆:770 (小虾三级) | 2012-11-08 11:39
0

是安全性问题,现在ie的好象都显示掉了,要在ie上改一下就可以:

用FileUpload.PostFile.Filename获取不到完整路径,IE浏览器的安全性太高,在工具-->Inernet-->安全-->自定义级别-->启用  “将文件上载到服务器并包含本地路径”

OK...

jason2013 | 园豆:1998 (小虾三级) | 2012-11-08 13:18

@sym_cn:  修改IE设置的方法是不可行的,因为作为开发人员知怎么去设置但是用户不会去设置。

支持(0) 反对(0) 半路使者 | 园豆:41 (初学一级) | 2012-11-08 13:35
0

确实是安全性问题,我们一般改用SWFUpload

地址:http://code.google.com/p/swfupload/

.! | 园豆:402 (菜鸟二级) | 2012-11-08 13:38
0

是文件上传吗?

jquery的uploadify

或者是

flash的上传

chenping2008 | 园豆:9836 (大侠五级) | 2012-11-08 15:09
0

不行就用第三方上传jquery的uploadify

jerry-Tom | 园豆:4077 (老鸟四级) | 2012-11-08 15:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册