<input type="file" id="file1 />我记得以前用VS2003 的时候,使用 file1.value 即可获取完整的路径和文件名,如:e:\image\p1.jpg但现在我用 vs2005 只能得到一个文件名,即:p1.jpg  而且手写一个简单的HTML文件,里面加js代码读取 file.value,也是只有文件名(IE则有完整的路径名)我不知道为什么要这么做,请哪位大侠给解释一下,是不是跟安全有什么关系?现在我用VS2005,我想要用户选择一个本地文件以后,获取它的完整路径应该怎么做?不想使用 file.PostedFile.SaveAs(),批量上传文件时觉得有些麻烦。

解决方案 »

  1.   

    asp.net夜话之三:表单和控件
    本文介绍HTML表单方面的知识,并捎带提及了乱码问题,在文中还提出了SQL注入问题,并且对HTML服务器控件做了一些初步的探讨,有关服务器控件的知识接下来的篇幅中还会继续探讨。asp.net夜话之六:asp.net基本控件
    asp.net服务器控件是微软为了方便开发者开发而推出的一系列控件,它们都以类似的方式出现在Visual Studio 2005的源视图里,*代表了控件名,如就表示这是一个Button控件。asp.net服务器控件除了提供HTML服务器控件所能提供的功能之外,还有很多功能更为复杂的控件。这些控件可以分为简单控件、容器控件、数据绑定控件、数据源控件和数据验证控及用户自己根据自己业务需要将一些控件组合在一起组成的用户控件等。asp.net控件的特点与HTML服务器控件类似,也有如下特点:(1)asp.net服务器控件必须有一个在当前页面中唯一的ID属性和runat=”server”属性;(2)asp.net服务器控件必须放在服务器端表单中;(3)asp.net服务器控件最终会被解释成普通HTML标记发送到客户端浏览器。本文主要介绍以下控件:Button控件TextBox控件Web服务器控件的特殊客户端事件FileUpload控件Literal控件Panel控件PlaceHolder控件
      

  2.   

    //遍历页面所有上传控件
            HttpFileCollection files = HttpContext.Current.Request.Files;
            try
            {
                //上传和插入记录
                for (int iFile = 0; iFile < files.Count; iFile++)
                {                HttpPostedFile postedFile = files[iFile];
                    string fileName = System.IO.Path.GetFileName(postedFile.FileName);//获取文件名
                    string[] str = fileName.Split('.');
                    string fileExtention = str[str.Length - 1]; //获取扩展名
    用的是Input File控件
      

  3.   

    批量文件上传          HttpFileCollection files = HttpContext.Current.Request.Files; 
     
      

  4.   

    各位是不是没看清我问题呀,我只是想当用户选择一个文件以后,把它的完整路径保存下来,然后传到服务端去。现在的问题是我只能得到 file 控件中的文件名,却拿不到路径。我用的是 vs2005
      

  5.   

    楼上的回答都跟作者的提问不符。
    在 vs 2008 中也是,调用file.value 只能得到最后的文件名,没法得到物理路径。查msdn 2008:
    “HtmlInputFile.value 属性 - 重载列表 ”value 的说明是:“获取客户机上文件的完整路径。 (重写 HtmlInputControl..::.Value。)”,而实际上在vs2008 中却得不到完整路径。