2016-08-26 25 views
0

こんにちは私は複数のファイルをC#でアップロードしようとしていますが、1つしかアップロードできませんが、複数アップロードする必要があります。ファイルのプレビュー(画像のみ)、複数のファイルをアップロードするためのコードがありますが、フレームワーク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:AllowMultipleプロパティのみ.NET 4.0でのFileUploadコントロールに追加されたので

<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

、これはあなたが自分自身を持ち上げるいくつかの重いをしなければならないとしていることを意味します。

最大アップロード量が固定されていない場合(例3の場合)、ページに3つのFileUploadコントロールを追加し、Request.Filesをループするだけです。

上限が大きい場合は、javascriptを使用してアップロードフィールドを動的に追加し、ページコードの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

私も、私は、おかげで仲間をジェネリックハンドラを使用して考えているという情報を確認するつもりです。 –

関連する問題