2016-05-10 4 views
0

ich mehr als ein Bild mit FileUpload Steuerung hochzuladen versuchen, aber nicht in der Lage es ich versuchte, wie mehr Bilder mit Fileupload conrol in Framework 4.0 in asp.net wählen C#

zu tun:

<asp:FileUpload ID="fuImage" AllowMultiple="true" runat="server"/> 

und dies auch:

<asp:FileUpload ID="fuImage" multiple="multiple" runat="server"/> 

aber wie ich stundenlang auf google gesucht, fand ich, dass dies nur für die Version 4.5 nicht

in 4.0 arbeitet
protected void btnAdd_Click(object sender, EventArgs e) 
    { 
     if (fuimage.HasFile) 
     { 
      string fname = fuimage.FileName; 
      string path = Server.MapPath("~/EventPics/"); 
      string fext = Path.GetExtension(fname); 
      fext = fext.ToLower(); 
      string link = "~/EventPics/" + fname; 
      if (fext == ".jpg" || fext == ".png" || fext == ".gif" || fext == ".bmp") 
      { 
       fuimage.SaveAs(path + fname); 
       con = new SqlConnection(ConfigurationManager.ConnectionStrings["WebAAERT_DBConnectionString"].ConnectionString); 
       SqlCommand cmd; 

       //create command 
       cmd = new SqlCommand("EventMasterInsert", con); 
       cmd.CommandType = CommandType.StoredProcedure; 
       cmd.Parameters.AddWithValue("@ImagePath", link); 
       cmd.Parameters.AddWithValue("@EventTitle", txtEventTitle.Text); 
       cmd.Parameters.AddWithValue("@EventDate", txtEventDate.Text); 
       cmd.Parameters.AddWithValue("@EventPlace", txtPlace.Text); 
       cmd.Parameters.AddWithValue("@ShortDescription", txtShort.Text); 
       cmd.Parameters.AddWithValue("@Description", txtDesc.Text); 
       cmd.Parameters.AddWithValue("@EventTime", txtTime.Text); 
       //open connection 
       cmd.Connection = con; 
       con.Open(); 

       //execute command 
       int rowcount = cmd.ExecuteNonQuery(); 
       if (rowcount > 0) 
       { 
        Response.Write("<script>alert('Event Added');</script>"); 
        txtDesc.Text = ""; 
        txtEventDate.Text = ""; 
        txtEventTitle.Text = ""; 
        txtPlace.Text = ""; 
        txtShort.Text = ""; 
        txtTime.Text = ""; 


       } 
      } 
     } 

ich versuchte

foreach(item in fuImage.postedFile) 
{ 
} 

aber seine nicht funktioniert .. keine Ahnung, wie es in den meisten einfachen Weg zu tun ..

Antwort

1

versuchen, diese

 protected void btnAdd_Click(object sender, EventArgs e) 
     { 
      if (Request.Files.Count > 0) 
      { 
       HttpFileCollection attachments = Request.Files; 
       for (int i = 0; i < attachments.Count; i++) 
       { 
        HttpPostedFile attachment = attachments[i]; 
        if (attachment.ContentLength > 0 && !String.IsNullOrEmpty(attachment.FileName)) 
        { 
         string fname = attachment.FileName; 
         string path = Server.MapPath("~/EventPics/"); 
         string fext = Path.GetExtension(fname); 
         fext = fext.ToLower(); 
         string link = "~/EventPics/" + fname; 
         if (fext == ".jpg" || fext == ".png" || fext == ".gif" || fext == ".bmp") 
         { 
          attachment.SaveAs(path + fname); 
          con = new SqlConnection(ConfigurationManager.ConnectionStrings["WebAAERT_DBConnectionString"].ConnectionString); 
          SqlCommand cmd; 

          //create command 
          cmd = new SqlCommand("EventMasterInsert", con); 
          cmd.CommandType = CommandType.StoredProcedure; 
          cmd.Parameters.AddWithValue("@ImagePath", link); 
          cmd.Parameters.AddWithValue("@EventTitle", txtEventTitle.Text); 
          cmd.Parameters.AddWithValue("@EventDate", txtEventDate.Text); 
          cmd.Parameters.AddWithValue("@EventPlace", txtPlace.Text); 
          cmd.Parameters.AddWithValue("@ShortDescription", txtShort.Text); 
          cmd.Parameters.AddWithValue("@Description", txtDesc.Text); 
          cmd.Parameters.AddWithValue("@EventTime", txtTime.Text); 
          //open connection 
          cmd.Connection = con; 
          con.Open(); 

          //execute command 
          int rowcount = cmd.ExecuteNonQuery(); 
          if (rowcount > 0) 
          { 
           Response.Write("<script>alert('Event Added');</script>"); 
           txtDesc.Text = ""; 
           txtEventDate.Text = ""; 
           txtEventTitle.Text = ""; 
           txtPlace.Text = ""; 
           txtShort.Text = ""; 
           txtTime.Text = ""; 


          } 
         } 
        } 
       } 
      } 
     } 
+0

Ich bin mehr als Datei auswählen nicht in der Lage. also wird dieser Code auch nur ein Bild hochladen. –

+0

Ich habe diese '' –

1

Sie können nicht mit .net Framework 4.0. Der Upload mehrerer Dateien ist eine Funktion von HTML. Vielfache für das Dateieingabesteuerelement wurden gerade erst in HTML 5 hinzugefügt, ASP.Net 4.0 hatte diese Funktion nicht. Sie müssen ein Drittanbieter-Steuerelement finden, das nicht von dem fileUplod-Steuerelement erbt, um dies zu tun.

http://www.asp.net/ajaxlibrary/AjaxControlToolkitSampleSite/AsyncFileUpload/AsyncFileUpload.aspx

http://www.codeproject.com/Articles/24271/Multiple-File-Upload-User-Control

+0

oder Sie können .net framework 4.5 verwenden, da sie diese Funktion haben sie fügen FileUpload.PostedFiles Property hinzu link https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.postedfiles(v=vs.110).aspx –