protected void btnfile_Click(object sender, EventArgs e)
    {
        //判断文件是否选好
        if (FileUpload1.HasFile)
        {
            //得到上传的文件名
            string filename = FileUpload1.FileName;
            //得到要上传的文件的扩展名
            string ext = System.IO.Path.GetExtension(filename);            if (ext == ".jpg" || ext == ".JPG" || ext == ".gif" || ext == ".GIF" || ext == ".png" || ext == ".PNG")
            {
                //判断文件的大小
                int size = this.FileUpload1.PostedFile.ContentLength;
                if (size > 512 * 512 * 2)
                {
                    JScript.AlertByControl(btnfile, "您上传的图片过大,请重新选择!");
                }
                else
                {
                    //得到一个新名称
                    DateTime today = System.DateTime.Now;
                    filename = string.Format("{0:yyyyMMddHHmmss}",today)+ext;  //生成服务器端文件名
                    FilePath = Server.MapPath(@"~\photos\" + filename);
                    //上传
                    this.FileUpload1.PostedFile.SaveAs(FilePath);                    Image1.Visible = true;
                    this.Image1.ImageUrl = FilePath;
                }
            }
            else
            {
                JScript.AlertByControl(btnfile, "只能上传图片!");
            }
        }
        else
        {
            JScript.AlertByControl(btnfile, "请选择上传图片!");
        }
}
     在第一次上传,点击上传后,fileupload控件会自动清空,而从第二次开始,才可以获取到值,什么问题 ? 

解决方案 »

  1.   

     调试了, 第一次点击后,判断 if( FileUpload1.HasFile)  时,会跳到else ,提示 请选择上传图片 
      

  2.   

     在前台我也添加这个 ,我在前面导入excel文件,也是类似的代码,第一次导入就能成功,真不知道什么原因 、<Triggers>
                <asp:PostBackTrigger ControlID="btnfile"/>
    </Triggers>
      

  3.   

    UpdatePanel????fileupload 就是这样  放在UpdatePanel中,取不到filename 放在UpdatePanel外,需要回发。。fileupload 和 UpdatePanel 是一对冤家来着
      

  4.   

    page_load里面是否加了回传验证?
      

  5.   


      去掉后,fileupload每次都会自动清空
      

  6.   

    http://leehai.blog.51cto.com/757045/153736
      

  7.   

    有btnfile这个控件。什么原因? 无法为 UpdatePanel“UpdatePanel1”中的触发器找到 ID 为“ctl00$ContentPlaceHolder1$btnfile”的控件。
      

  8.   

    改动什么了,报的错?
    明显这个控件在Content下要更改名称id的
      

  9.   

     没改什么啊 ? PostBackTrigger trigger = new PostBackTrigger();
                trigger.ControlID = btnfile.UniqueID;
                UpdatePanel1.Triggers.Add(trigger);
      

  10.   

            PostBackTrigger trigger = new PostBackTrigger();
            trigger.ControlID = bt_nsure.UniqueID;
            trigger.ControlID = bt_usure.UniqueID;
            UpdatePanel1.Triggers.Add(trigger);        同时放了两个按钮,第二个bt_usure打断点的时候得到的还是空值?为啥?