C# Web 同時顯示多張二進制圖檔

小米乙
想請問各位先進,我在一個頁面上(Web),想同時呈現出所上傳的圖檔(3個),但是測試後,都三張都是同一張圖,Image也都有加上ID,
但還是都只出現同一張圖,以下程式:
ASP.NET:
<table class="auto-style1" id ="TB" runat="server">
        <tr>
            <td class="auto-style2">&nbsp;</td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td class="auto-style2">&nbsp;</td>
            <td>&nbsp;</td>
        </tr>
    </table>


C# code:
DataTable PictuerDB = DC01.GetPictuer(Dinfo, getptinfo);
System.Web.UI.WebControls.Image ig = new System.Web.UI.WebControls.Image();
for (int ir = 0; ir < this.TB.Rows.Count; ir++)
{
   for (int ic = 0; ic < this.TB.Rows[ir].Cells.Count; ic++)
   {
       switch (ir)
       {
          case 0:

             break;
          case 1:
             if (ic == 1)
             {
                for (int pct = 0; pct < PictuerDB.Rows.Count; pct++)
                {
                   string[] Getp = new string[]
                   {
                       PictuerDB.Rows[pct][4].ToString(),
                       PictuerDB.Rows[pct][5].ToString(),
                       PictuerDB.Rows[pct][6].ToString()
                   };
                   Session["Getp"] = Getp;
                   ig = new System.Web.UI.WebControls.Image()
                   {
                       ID = PictuerDB.Rows[pct][0].ToString(),
                       ImageUrl = "../GetPictuer.aspx?id=" + PictuerDB.Rows[pct][0].ToString() ,
                       Width = 100
                   };
                   this.TB.Rows[ir].Cells[1].Controls.Add(ig);
                }
              }
              break;
        }
      }
}




GetPictuer.aspx
            try
            {
                if (Session["Getp"] != null)
                {
                    string picid = "";
                    if(Request.QueryString["id"] != null)
                    {
                        picid = Request.QueryString["id"];
                    }

                    string[] Getinfo = (String[])Session["Getp"];
                    string UpFiles = Getinfo[0].ToString();
                    string FileType = Getinfo[1].ToString();
                    string BytCod = Getinfo[2].ToString();

                    //byte[] binaryBytes = Convert.FromBase64String(BytCod);
                    //Response.AddHeader("Content-Length", Convert.ToString(binaryBytes.Length));
                    //Response.ContentType = "image/jpg";
                    //Response.OutputStream.Write(binaryBytes, 0, binaryBytes.Length);

                    Byte[] byteImg = Convert.FromBase64String(BytCod);
                    Stream stream = new MemoryStream(byteImg);
                    System.Drawing.Bitmap img = (System.Drawing.Bitmap)System.Drawing.Bitmap.FromStream(stream, false);
                    Response.Buffer = false;
                    Response.ContentType = FileType;
                    Response.AppendHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(UpFiles, System.Text.Encoding.UTF8));
                    Response.BinaryWrite(byteImg);
                    Response.End();
                }
            }
            catch
            {

            }

MIS2000 Lab
您可以參考這篇文章
從資料表裡面,讀取二進位內容,還原成圖片
http://www.blueshop.com.tw/board/FUM20041006161839LRJ/BRD20120905152244WNN.html


這是我的寫法
[Web Form的範例] 把圖片上傳Web Server硬碟,把路徑(文字)寫入資料表,作法比較簡單。
https://dotblogs.com.tw/mis2000lab/2011/09/22/fileupload_picture_db_insert


[MVC 5的範例] 從資料表裡面,讀取二進位內容,還原成圖片
https://mis2000lab.pixnet.net/blog/post/35284894

希望對您有幫助

最有價值解答

MIS2000 Lab
Web Form的範例

(1) 從資料表裡面,把二進位的內容(欄位的資料型態:varChar(MAX)或 Image都可以)抓出來,還原成圖片
檔名 Display.ashx
            Conn.Open();   //---- 連結DB
          SqlCommand cmd = new SqlCommand("Select 存放圖片的欄位 From 你的資料表 Where id =@FileUpload_DB_id", Conn);
          cmd.Parameters.AddWithValue("@FileUpload_DB_id", Request["id"]);

            dr = cmd.ExecuteReader();   //---- 執行SQL指令,取出資料
            
            context.Response.Clear();
            context.Response.ContentType = "image/jpeg";
            dr.Read();
            context.Response.BinaryWrite((byte[])dr["FileUpload_FileName"]);   // 以陣列的方式,把二進位圖片檔讀取出來。

                cmd.Cancel();
                dr.Close();



(2) 網頁上,呈現這圖片
                <asp:Image ID="Image1" runat="server" 
                    ImageUrl='<%# "Display.ashx?id=" + Eval("FileUpload_DB_id")%>' />


希望有幫上忙.....
範例來源 - ASP.NET專題實務(II),博碩出版
小米乙
感謝MIS2K前輩,我先研究看看~~桑QQQ
回到頂部