2016-08-26 2 views
0

Привет, я пытаюсь создать многократную загрузку файлов с C#, на данный момент я могу загрузить только одну, но мне нужно загрузить больше одного, другое дело, что я должен показать предварительный просмотр файла (только изображения), у меня есть код для загрузки нескольких файлов, но работает только в рамках 4+, а мое приложение - в 3,5, я думаю об использовании foreach или что-то в этом роде, но я не уверен так что я надеюсь, что вы можете мне помочь, вот мой метод C# для загрузки файла:Преобразование загрузки файла в несколько файлов с загрузкой C#

protected void UploadFile(object sender, EventArgs e) 
    { 
     if (FileUpload1.HasFile && this.alertatxt.Text != "" && this.pietxt.Text != "") 
     { 
      string extension = System.IO.Path.GetExtension(FileUpload1.FileName); 

      if (extension == ".jpg" || extension == ".png" || extension == ".jpeg") 
      { 
       string filename = Path.GetFileName(FileUpload1.PostedFile.FileName); 
       string contentType = FileUpload1.PostedFile.ContentType; 
       int alerta = Convert.ToInt32(this.alertatxt.Text); 
       string pie = this.pietxt.Text; 
       using (Stream fs = FileUpload1.PostedFile.InputStream) 
       { 
        using (BinaryReader br = new BinaryReader(fs)) 
        { 
         byte[] bytes = br.ReadBytes((Int32)fs.Length); 
         string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; 
         using (MySqlConnection con = new MySqlConnection(constr)) 
         { 
          string query = "INSERT INTO foto(FileName, ContentType, Content, IdAlerta, PieFoto) VALUES (@FileName, @ContentType, @Content, @alerta, @pie)"; 
          using (MySqlCommand cmd = new MySqlCommand(query)) 
          { 
           cmd.Connection = con; 
           cmd.Parameters.AddWithValue("@FileName", filename); 
           cmd.Parameters.AddWithValue("@ContentType", contentType); 
           cmd.Parameters.AddWithValue("@Content", bytes); 
           cmd.Parameters.AddWithValue("@alerta", alerta); 
           cmd.Parameters.AddWithValue("@pie", pie); 
           con.Open(); 
           cmd.ExecuteNonQuery(); 
           con.Close(); 
          } 
          ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('Uploaded.');", true); 
         } 

        } 
        this.pietxt.Text = ""; 
       } 
      } 
      ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('File must be .jpg . png .jpeg');", true); 
      this.pietxt.Text = ""; 
     } 
     else 
     { 
      ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('Fill all the fields.');", true); 
      this.alertatxt.Focus(); 
      this.pietxt.Text = ""; 
     } 

    } 

EDIT: изображение предварительного просмотра не очень важно, но тем не менее здесь код:

<div class="col-md-6 text-center form-group"> 
            <asp:FileUpload ID="FileUpload1" runat="server" onchange="showimagepreview(this)" /> 
           </div> 
    <div class="col-md-6 text-center form-group"> 
           <img id="img" alt="" class="img-responsive" style="width: 300px" /> 
          </div> 

JS:

<script type="text/javascript"> 

    function showimagepreview(input) { 

     if (input.files && input.files[0]) { 
      var reader = new FileReader(); 
      reader.onload = function (e) { 

       document.getElementsByTagName("img")[0].setAttribute("src", e.target.result); 
      } 
      reader.readAsDataURL(input.files[0]); 
     } 
    } 

</script> 

ответ

1

Поскольку AllowMultiple свойство было добавлено только к контролю FileUpload в .Net 4.0, это означает, что вы будете иметь, чтобы сделать некоторые тяжелый подъем самостоятельно.

Если у вас есть небольшое фиксированное максимальное количество загрузок, например, 3, вы можете просто добавить 3 элемента управления FileUpload на страницу и зациклиться на Request.Files.

Если у вас есть большой максимальный лимит, возможно, было бы лучше добавить поля загрузки динамически, используя javascript и loop over Request.Files в коде страницы.

Есть примеры делать именно это:

http://www.c-sharpcorner.com/uploadfile/prathore/multiple-file-upload-using-jquery-in-asp-net-3-5/

http://www.aspsnippets.com/Articles/Uploading-Multiple-Files-using-FileUpload-Control-in-ASPNet-20-30-and-35.aspx

+0

Я собираюсь проверить эту информацию и я думал об использовании универсального обработчика, спасибо братан. –

Смежные вопросы