文件上传不读取正在上传的文件

我正在尝试使用文件上传上传 excel 文件,但是每当我执行“If (FileUpload.HasFile)”时,它总是返回 false,即使我已经选择了一个文件。下面是我点击上传按钮时的代码。


(已编辑:当我上传文件时,if 语句最终变为真 另一个问题是此错误消息显示“SaveAs 方法配置为需要有根路径,而路径 '~/Datas/Book1.xlsx' 没有根。” )


块引用


  protected void btnUpload_Click(object sender, EventArgs e)

{

        if (FileUpload1.HasFile)

        {

            try

            {

            FileUpload1.SaveAs("~/Datas/" + FileUpload1.FileName);

            Label1.Text = "File name: " +

                FileUpload1.PostedFile.FileName + "<br>" +

                FileUpload1.PostedFile.ContentLength + " kb<br>" +

                "Content type: " +

                FileUpload1.PostedFile.ContentType;

            string FileName = FileUpload1.FileName;

            string path = string.Concat(Server.MapPath("~/Datas/" + FileUpload1.FileName));


            FileUpload1.PostedFile.SaveAs(path);


            OleDbConnection OleDbcon = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;");


            OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", OleDbcon);

            OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(cmd);

            DataSet ds = new DataSet();

            //Dt.Clear(); ds.Clear();

            objAdapter1.Fill(ds);

            DataTable Dt = new DataTable();

            Dt = ds.Tables[0];

            DataColumn dc = Dt.Columns.Add("Ser", typeof(Int32));

            int count = 0;

            foreach (DataRow item in Dt.Rows)

            {

                count++;

                item["Ser"] = count;

            }


            TraineeGrid.DataSource = Dt;

            TraineeGrid.DataBind();

        }

             catch (Exception ex)

           {

                 Label1.Text = "ERROR: " + ex.Message.ToString();

           }

       }


        else

        {

            Label1.Text = "You have not specified a file.";

        }

    }

我有一张由按钮组成的表格,这是文件上传和上传按钮所在的位置


吃鸡游戏
浏览 231回答 2
2回答

交互式爱情

由于某些安全原因,FileUpload 控件在回发期间不会保留该值。一种方法是为您的上传按钮设置触发器<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>&nbsp;<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">&nbsp; &nbsp; &nbsp; <ContentTemplate>&nbsp; &nbsp; &nbsp; <asp:FileUpload ID="fileUpload" runat="server"></asp:FileUpload>&nbsp; &nbsp; &nbsp; <asp:Button ID="btnUpload" runat="server" OnClick="btnUpload_Click" />&nbsp; &nbsp; &nbsp; </ContentTemplate>&nbsp; &nbsp; &nbsp; <Triggers>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <asp:PostBackTrigger ControlID="btnUpload"&nbsp; />&nbsp; &nbsp; &nbsp; </Triggers>&nbsp;</asp:UpdatePanel>&nbsp;protected void btnUpload_Click(object sender, EventArgs e)&nbsp; &nbsp; &nbsp;{&nbsp; &nbsp; &nbsp; &nbsp; if (fileUpload1.HasFile)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fileUpload1.SaveAs("C:\\" + fileupload1.FileName);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp;}

白衣非少年

我已经尝试过,我能够得到文件。<asp:FileUpload ID="FileUpload1" runat="server" /><asp:Button ID="btnok" runat="server" Text="Ok"&nbsp; OnClick="btnok_Click"/>下面的事件是按钮单击。我可以知道您在哪个地方遇到问题。&nbsp;protected void btnok_Click(object sender, EventArgs e)&nbsp; &nbsp;{&nbsp; &nbsp; &nbsp;if(FileUpload1.HasFile)&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; var val=FileUpload1.PostedFile;&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go