本人 应届毕业,菜鸟一名,还希望高手能不吝赐教。。下面是我得代码段,写得很粗糙。。
protected void BtnUpLoad_Click(object sender,EventArgs e)
        {
            bool FileVaild = false;
            this.LabelMessage.Text = string.Empty;
            this.LabelEorror.Text = string.Empty;
            if (this.FileUpLoad1.HasFile)
            {
                //获取文件的后缀名
                string StrExtesion = System.IO.Path.GetExtension(this.FileUpLoad1.FileName);               //指定允许的后缀名范围
                string[] ExtensionArr = { ".jpg",".gif","png",".bmp"};                //判断后缀名是符合范围
                for (int i = 0; i < ExtensionArr.Length;i++ )
                {
                    if(StrExtesion == ExtensionArr[i])
                    {
                        FileVaild = true;
                    }
                }                if (FileVaild)
                {
                    string FileName = Server.MapPath("~/images/") + this.FileUpLoad1.FileName;
                    this.FileUpLoad1.SaveAs(FileName);
                    this.Images1.ImageUrl = "~/images/" + this.FileUpLoad1.FileName;
                    this.LabelMessage.Text = "文件上传成功!";
                    this.LabelMessage.Text += "<br />";
                    this.LabelMessage.Text += "<li>文件名为:"+this.FileUpLoad1.FileName;
                    this.LabelMessage.Text += "<br/>";
                    this.LabelMessage.Text += "<li>文件的原始路径为:" + this.FileUpLoad1.PostedFile.FileName;
                    this.LabelMessage.Text += "<br />";
                    this.LabelMessage.Text += "<li>文件的大小为:" +this.FileUpLoad1.PostedFile.ContentLength + "  KB";
                    this.LabelMessage.Text += "<br />";
                    this.LabelMessage.Text += "<li>文件的类别为:"+this.FileUpLoad1.PostedFile.ContentType;                }
                else this.LabelEorror.Text = "只能上传图片文件!";
            }
            else this.LabelEorror.Text = "请选择你需要上传的文件!";
问题一:
文件的确是是成功上传进去了。但是为什么我项目中保存文件夹里面的文件 一开始是不显示的,非得我点“显示所有文件”,它才会显示出来呢?
问题二: 就是 显示出来之后 它是个白色的 需要我点击鼠标右键 ,然后选择“包括在项目中”,文件才会显示正常的颜色。
问题三:
 FileUpLoad控件的PostedFile.FileName 返回的不是上传文件的完全限定名吗?为什么我得到的结果是文件名呢。。前面的路径那段跑哪去了。。再次万分感谢!!!!!来个高手嘛 -w-

解决方案 »

  1.   

    1其实你把这个文件夹添加包含到项目中就好了,这个文件夹你肯定是在解决方案的文件夹里手动建的,应该在项目中右击添加新建文件夹,这样就不用包含了2.你上传文件,这个文件夹显示的还是上次的状态,其实这个文件早就生成好了,你只要刷新一下文件夹就出来了3.这个确实是文件名啊,你要用的是file.xXx
    取的时候用的是server.mappath()
      

  2.   

    1,因为项目管理器不是磁盘, 你到项目所在的磁盘中去看,肯定已经存在了
    2,脑袋秀逗了?什么都包括在项目中。只要它真实存在磁盘中。包不包括有什么关系? 我项目中图片几个G,难道我都包括进去?打开一个源码 要多久?
    3,c#的设计者都清清楚楚说了FileName得到的是文件名。 奇了怪了 为了你 变成完整路径么。
      
    你在去查原理, 这个控件是无法得到磁盘路径的。安全问题。操作磁盘的类是File
      

  3.   

    问题1,2是VS本身就是这么设计的,
    问题三,是浏览器不允许上传文件带路径的,比如http://www.norun.cn/UpFiles/Article/201171117475331032.jpg
      

  4.   

    首先一和二两个问题:你是在VS直接运行的吧?文件上传成功后VS并不能及时侦测,并且你这两个问题等放到服务器上后是无需考虑的。
    三:现在FileUpload不支持获取全部路径,只能获取FileName,你要客户端的路径是得不到的。
      

  5.   

    饿 不是饿 我在网上看到了很多的人写得代码都是
    获取上传文件客户端路径是:this.fileupload1.postedfile.filename;
    this.fileupload.filename 是获取文件名,但是上述的前面还有个postedfile呢。
    还有,就是 我这个只是做一个上传效果的小例子,真正的图片数据是放在数据库的。你们说的那个 什么file.xxx() 是那个命名空间的对象的属性? 我想取的是 上传文件在客户端的绝对路径。
      

  6.   

    this.fileupload1.postedfile.filename;关于这个是input type=file   ruant=server 
    的属性写asp:FileUpLoad    跟 input  2种写法,