FileUpload获取不到路径的问题

转载 2012年03月23日 10:26:15

  在一本书上发现的问题   到时只是练练手  发现当我用    UpLoadFile.PostedFile.FileName 获取完整路径的时候尽然获取不到   从网上找能很多资料   发现都是能够获取到的   因为只是新手  所以百思不得其解   于是找到了书的作者   让他帮忙看看    发现最后是浏览器的问题在IE6是可以获取到的   IE8就只能获取名称了  

 

  以下是哪位作者解决的思路:

  
  转载地址http://www.cnblogs.com/szw/archive/2009/08/31/1557480.html

 

  这个问题源自一位热心而且踏实的读者,发现《ASP.NET 3.5+SQL Server网站模块化开发全程实录》中第117页的一段实例代码

 using System;
 using System.Web;
 using System.Web.UI;
 using System.Web.UI.HtmlControls;

 public partial class upLoadFile : System.Web.UI.Page
 {
    
protected void UpLoadFile_Click(Object sender, EventArgs e)
    {
        
        FileSize.InnerHtml 
= UpLoadFile.PostedFile.ContentLength.ToString();
        
//获取上传文件名
        String theFileDir = UpLoadFile.PostedFile.FileName;//获取文件名的完整路径
        
    }
}

 

    经过这位朋友的严格跟踪测试,发现PostedFile.FileName并不是“获取文件名的完整路径”,而只是文件名。
    起初我也愣了一下,于是赶紧测试,发现确实是文件名,而不是完整路径。但是在我记忆中,非常确定这个方法是可以获取到完整路径的。于是静下心来一想,真相只有一个——浏览器!
    着手验证。
    上传本地物理路径的文件D:/testupload.jpg。
        用IE7/IE8获取PostedFile.FileName结果如下:testupload.jpg。
        用IE6获取PostedFile.FileName结果如下:D:/testupload.jpg。
    同时使用HttpWatch跟踪了一下,发现从Post的环节上,就已经显现出上述差别:
        IE7/8:filename="testupload.jpg" Content-Type: image/pjpeg
        IE6:filename="D:/testupload.jpg" Content-Type: image/pjpeg

    于是问题已经本明了了:不同的浏览器对于post<input type="file" />的值(一般这个值中包含了两个信息,分别是[路径+]文件名以及ContentType)有所差别(其本质除了浏览器的行为因素外,还有默认安全设置的问题)。

    因此得出一个更加周全的处理建议:使用FileUpload控件在获取文件名的时候,尽量使用 Path.GetFileName(UpLoadFile.PostedFile.FileName)这样的方法,将其视同完整路径来处理,这样可以使任何浏览器下面都能得到正确的文件名,而不会包含路径(书本中用了一个比较繁琐的过程过滤路径,仅供学习之用:))。
   起先我在本机很容易就获取了完整的路径,不过经过几位朋友的提示,发现远程访问的时候还是会有问题,看来这确实是件难事了,不过这本身也就是浏览器安全性的体现,关于非要从客户端获取完整路径的问题我就不钻牛角尖了:)

FileUpload上传文件时,为何不能获取到完整路径

以前我用FileUpload.PostFile.Filename就可以获取了,但是现在发现不行了,查了很多资料,最后谜底揭开了 原来是我IE浏览器的安全性太高了,在工具-->Inernet-->...
  • wyh0318
  • wyh0318
  • 2012年03月23日 09:40
  • 879

获取FileUpload中的上传文件路径

//单击事件,完成上传文件到服务器 private void btnUpload_Click(object sender, System.EventArgs e)   {     if(file...
  • Robin022
  • Robin022
  • 2012年02月01日 22:10
  • 9511

fileupload中设置临时文件路径相关问题

DiskFileItemFactory factory=new DiskFileItemFactory(); factory.setRepository(new File(this.getServle...
  • xingshen100
  • xingshen100
  • 2013年10月26日 22:06
  • 3501

Asp.Net WebForm 图片上传及物理路径的得到

【得到物理路径】 1.在类中获取物理路径: System.Web.HttpContext.Current.Server.MapPath(""); [注意:要引用程序集System.Web] ...
  • lichunlin1994
  • lichunlin1994
  • 2016年12月09日 15:04
  • 1158

使用common-fileUpload实现文件上传

FileUpload上传一个文件的过程中可以分为三个部分:首先,客户端与服务器端建立连接,把要上传的文件生成request数据流。其次服务器端接收request流,将流缓存到内存或磁盘中。当文件过大时...
  • u010066934
  • u010066934
  • 2015年08月13日 20:37
  • 2953

FileUpload控件上传不支持给定路径的格式 问题解决

string filepath = Server.MapPath("~/upload"); HttpFileCollection uploadFile = Request.Fi...
  • mynewdays
  • mynewdays
  • 2012年09月25日 19:55
  • 6665

fileupload中设置临时文件路径相关问题

DiskFileItemFactory factory=new DiskFileItemFactory(); factory.setRepository(new File(this.getServle...
  • xingshen100
  • xingshen100
  • 2013年10月26日 22:06
  • 3501

FileUpload上传文件时,为何不能获取到完整路径

以前我用FileUpload.PostFile.Filename就可以获取了,但是现在发现不行了,查了很多资料,最后谜底揭开了 原来是我IE浏览器的安全性太高了,在工具-->Inernet-->...
  • wyh0318
  • wyh0318
  • 2012年03月23日 09:40
  • 879

使用Commons-fileupload 组件上传时,获取表单其它元素系列问题集锦

如果在表单中使用表单元素 ,浏览器在解析表单时,会自动生成一个输入框和一个按钮,输入框可供用户填写本地文件的文件名和路径名,按钮可以让浏览器打开一个文件选择框供用户选择文件:   当表单需要上传文...
  • M_none
  • M_none
  • 2012年05月02日 16:24
  • 2064

Android 4.4版本获取图片路径问题

  • 2017年07月20日 09:31
  • 949KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:FileUpload获取不到路径的问题
举报原因:
原因补充:

(最多只允许输入30个字)