当前位置:编程学习 > C#/ASP.NET >>

FileUpload控件如何获取要上传文件的路径?

FileUpload如何获取要上传文件的路径?  选中之后怎么获取他的路径? --------------------编程问答-------------------- string path = Server.MapPath("~/bc/");BC为文件夹,
然后绝对路径是 path=path+FileUpload1.FileName; --------------------编程问答--------------------
引用 1 楼 msdnxgh 的回复:
string path = Server.MapPath("~/bc/");BC为文件夹,
然后绝对路径是 path=path+FileUpload1.FileName;

+1 --------------------编程问答-------------------- Server.MapPath方法是获取文件物理路径 --------------------编程问答-------------------- 我要获取的是服务器端的路径! --------------------编程问答-------------------- 是的,以上方法就是获取服务器端的路径 --------------------编程问答-------------------- 你先试试吧,Server.MapPath(文件名)也这也可以直接获取,但要文件和网页在同一根目录,还是用我一楼的方法吧。。我常常用来上传MP3 --------------------编程问答-------------------- FileUpload1.FileName,这个是文件名称,FileUpload1.PostedFile.FileName这个是整个路径 --------------------编程问答-------------------- string path = this.Server.MapPath("/ImgUpload/");//获取服务器存放物理路径
FileUpload1.PostedFile.SaveAs(path + FileUpload1.FileName);//保存文件

例:d:\1.TXT
FileUpload1.FileName是文件名称:1.TXT
FileUpload1.PostedFile.FileName是文件包含路径全名:d:\1.TXT --------------------编程问答-------------------- FileUpload1.PostedFile.FileName     只能获取到文件名字不能取到整个路径。

 难道是我人品太差? 真的获取不到! --------------------编程问答-------------------- string filename = this.FileUpload1.PostedFile.FileName; --------------------编程问答-------------------- FileUpload1.PostedFile.FileName 只能获取到文件名字不能取到整个路径。
就是获取文件名。。。
string path = Server.MapPath("~/bc/");BC为文件夹,
假设BS文件夹为上传文件所在文件夹,PATH就是获取BC文件夹的服务器绝对路径;
那么总路径为path=path+FileUpload1.FileName;
这样就可以获取全部绝对路径,就是我一楼的方法。。。。 --------------------编程问答--------------------  
 肯定是不知道文件夹名称啊? 因为我用的是选择上传控件 选择之后点击提交获得路径 

 路径肯定不是在我的项目下面! --------------------编程问答-------------------- using System.IO;
        string path = Server.MapPath("~/bc/");
        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }
查看有没有BC这个文件夹,没有就创建。。。。 --------------------编程问答--------------------
引用 8 楼 kofpanyifei 的回复:
string path = this.Server.MapPath("/ImgUpload/");//获取服务器存放物理路径
FileUpload1.PostedFile.SaveAs(path + FileUpload1.FileName);//保存文件

例:d:\1.TXT
FileUpload1.FileName是文件名称:1.TXT
FileUpload1.PostedFile……

+1 --------------------编程问答--------------------  


我的问题解决了!原来是IE8上面的一个安全级别问题! 呜呜.

FileUpload1.PostedFile.FileNam  这个还是可以获取到路径的!



  学习了... --------------------编程问答-------------------- string path = this.Server.MapPath("/ImgUpload/");//获取服务器存放物理路径
FileUpload1.PostedFile.SaveAs(path + FileUpload1.FileName);//保存文件

例:d:\1.TXT
FileUpload1.FileName是文件名称:1.TXT
FileUpload1.PostedFile.FileName是文件包含路径全名:d:\1.TXT
参考
http://topic.csdn.net/u/20100109/22/d08b5c98-16c8-4e45-ac86-b12b678be25f.html --------------------编程问答--------------------
引用 4 楼 super6577 的回复:
我要获取的是服务器端的路径!


服务器端的路径跟IE设置没有关系的。你的理解是错误的。
--------------------编程问答--------------------
引用 15 楼 super6577 的回复:
我的问题解决了!原来是IE8上面的一个安全级别问题! 呜呜.

FileUpload1.PostedFile.FileNam  这个还是可以获取到路径的!



  学习了...


获取客户端的文件路径是没有任何意义的。这个路径不等于服务器端的路径 --------------------编程问答--------------------
引用 9 楼 super6577 的回复:
FileUpload1.PostedFile.FileName     只能获取到文件名字不能取到整个路径。

 难道是我人品太差? 真的获取不到!

服务器端的路径是要你自己设定的啊
你搞清楚服务器的路径和客户端的路径了没有啊 --------------------编程问答-------------------- 楼主是要获取源文件路径吗?
这个 用js实现

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="BorrowPage.aspx.cs" Inherits="Borrow_BorrowPage" %>

<!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>xxx上传</title>
        <!--获取文件上传地址-->
    <script type="text/javascript">
    function checkFile()
    {
        //判断浏览器类型
        var isIE = (document.all) ? true : false;
        var isIE7 = isIE && (navigator.userAgent.indexOf('MSIE 7.0') != -1);
        var isIE8 = isIE && (navigator.userAgent.indexOf('MSIE 8.0') != -1);

        var file=document.getElementById("UpLoadBorrow");
        var path=file.value;
        if(isIE7 || isIE8)
        {
            file.select();
            path=document.selection.createRange().text;
            document.selection.empty();
        }
       document.getElementById("txtFilePath").value=path;
    }
    function checkNull()
    {
        var path=document.getElementById("txtFilePath").value;
       if(path=="" ||path==null)
       {
        alert('请选择要上传的文件!');
        return false;
       }
       return true;
    }
    </script>
    <base target="_self"/>
</head>
<body style="background-color:#0099FF;">
    <form id="form1" runat="server">
    <div style="margin:0px auto 0px auto;">
        <asp:Image ID="Image1" runat="server" BorderStyle="Double" Width="750" ImageAlign="Middle" AlternateText="上传"/>
        <br />
        上传:<asp:FileUpload ID="UpLoadBorrow" runat="server" Height="22px" onchange="checkFile()" onkeydown="event.returnValue=false;" onpaste="return false" />
        <input type="hidden" id="txtFilePath" runat="server" />//这里建立一个隐藏域 用来存地址
        <asp:Button ID="btnUpload" runat="server" Text="上传" OnClientClick="return checkNull()" OnClick="btnUpLoad_Click"  />
        <asp:Button ID="btnBack" runat="server" Text="返回" onmousedown="window.close();" /></div>
    </form>
</body>
</html>

后台

          string inputPath = txtFilePath.Value.Trim();
--------------------编程问答-------------------- 那个我看FileUpload1.PostedFile.FileNam这个是能过去路径的问题都是出现在IE8,IE8有时候还不能调试呢? --------------------编程问答-------------------- 这个是上传到服务器的跟路径 
string str = HttpContext.Current.Request.ServerVariables[ "APPL_PHYSICAL_PATH" ];
然后在加上
string path=str+"文件夹\\"+fileName; --------------------编程问答--------------------

                path = HttpRuntime.AppDomainAppPath + path;
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                string strSavePath = path + strSaveName;

方法很多,可以试一下上面这种 --------------------编程问答-------------------- 我也发现了这个问题,在我的程序里想要获取完全路径是想通过其来验证文件的类型,请问楼主如果是由IE8本身的安全设置导致的,那么是不是说在实际应用中还是不能够使用?如果客户端采用了相应安全级别的浏览器? --------------------编程问答-------------------- --------------------编程问答--------------------

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class Register : System.Web.UI.Page
{
   BusUser bu=new BusUser ();
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
          string imageurl = "";
        if (fuImage.PostedFile.FileName != "")
        {
            imageurl = fuImage.FileName;
        }        Users oneuser = new Users();

        oneuser .User_PetName =txtPetName .Text ;
        oneuser.User_Name = txtName.Text;
        oneuser.User_Tel = txtTel.Text;
        oneuser.User_Pwd = txtPwd.Text;
        oneuser .User_Email =txtEmail.Text ;
        oneuser.User_Image = imageurl;
        oneuser.User_Sex = int.Parse(rblSex.SelectedValue);
        oneuser .User_Address =txtAddress .Text ;
        oneuser.User_Open = true;
        oneuser.User_AddTime =DateTime .Parse ( DateTime.Now.ToShortTimeString ());

        if (bu.GetUserByName(txtName.Text) == null)
        {
            if (bu.addUser (oneuser))
            {
                fuImage.SaveAs(Server.MapPath("./") + "/images/" + imageurl);                Response.Write("<script>alert('注册成功');window.location.href='Default.aspx'</script>");
            }
            else
            {
                Response.Write("<script>alert('注册失败')</script>");
            }
        }
        else
        {
            Response.Write("<script>alert('该用户已经存在,请更换用户名,再次添加')</script>");
        }
    }
    }


--------------------编程问答-------------------- 上面的字体颜色设置,);没做作用
注意 --------------------编程问答-------------------- 在IE8中用FileUpLoad.PostedFile.FileName获取的只是上传文件的名称,怎么解决这个问题 --------------------编程问答-------------------- FileUploadAdd.PostedFile.FileName 全部路径
FileUploadAdd.FileName 文件名称
this.Server.MapPath(“xx”) 物理路径 --------------------编程问答-------------------- --------------------编程问答-------------------- document.getElementById("FileUpload1").select();  //选中FileUpload控件中的文本          
var path = document.selection.createRange().text;            //获取当前文本选中的文本 --------------------编程问答-------------------- document.getElementById("fupLogo").select();  //选中FileUpload控件中的文本         
//获取当前文本选中的文本document.selection.empty();  
var path = document.selection.createRange().text;    --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 两个都 可以 --------------------编程问答-------------------- 奇了,怪了,chrome浏览器在这两个都是只获取到文件名,没有路径

FileUpload1.FileName,这个是文件名称,FileUpload1.PostedFile.FileName这个是整个路径 --------------------编程问答-------------------- 我也遇到了这个问题,不知道怎么解决呢 --------------------编程问答-------------------- 我也遇到了这个问题.  --------------------编程问答-------------------- 就楼主的问题而言,上面已经给出了,我只想说一下,除非你搞winfrom,做web用FileUpload不行的,谷歌和火狐下得不到客户端文件的路径,这不是浏览器兼容性问题,而是浏览器本身安全性角度的保证,你只能用flash上传控件来做上传兼容处理,不信可以试试 --------------------编程问答-------------------- - - web的fileupload   有安全机制  无法获得服务器路径。  只能通过JS或者修改部分浏览器设置来得到客户端路径。。   建议 使用html控件file  通过表单提交的方式来上传     --------------------编程问答-------------------- 坑爹GOOGLE就是不行 --------------------编程问答-------------------- mark... --------------------编程问答--------------------
引用 2 楼 husiya2009 的回复:
[Quote=引用 1 楼 msdnxgh 的回复:]
string path = Server.MapPath("~/bc/");BC为文件夹,
然后绝对路径是 path=path+FileUpload1.FileName;

+1
+1 --------------------编程问答--------------------
引用 1 楼 MSDNXGH 的回复:
string path = Server.MapPath("~/bc/");BC为文件夹,
然后绝对路径是 path=path+FileUpload1.FileName;


正解
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,