2016-05-05 15 views
0

私はコードを別の方法で再加工しました。しかし、私のリターンはまだ盗聴されているようですか、それともファイルを正しく変換していませんか?dbからの画像をC#/ asp.netに読み込み

C#ページ読み込み時に呼び出されるメソッド。

 private void LoadDisplayPhoto() 
    { 
     var query = (from q in CurrentContext.DisplayPhotos 
        where q.UserID == CurrentUser.UserId 
        select q.Name).FirstOrDefault(); 
     if (query != null) 
     { 
      img_adm.ImageUrl = ("~/HandlerFiles/Display.ashx?ImageID=" + CurrentUser.UserId); 
     } 
     else 
     { 
      img_adm.ImageUrl = ("~/Content/img/NoProfilePic.jpg"); 
     } 
    } 

ハンドルファイル

public void ProcessRequest (HttpContext context) 
{ 
    byte[] buffer = null; 
    string querySqlStr = ""; 
    //SQL commands. 
    if (context.Request.QueryString["ImageID"] != null) 
    { 
     querySqlStr="select * from DisplayPhotos where PhotoId="+context.Request.QueryString["ImageID"]; 
    } 
    else 
    { 
     querySqlStr="select * from DisplayPhotos"; 
    } 
    //SQL 
    SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["WebTest"].ToString()); 
    SqlCommand command = new SqlCommand(querySqlStr, connection); 
    SqlDataReader reader = null; 
    try 
    { 
     connection.Open(); 
     reader = command.ExecuteReader(); 
     while (reader.Read()) 
     { 
      //The ID that was requested. 
      int id = Convert.ToInt32(context.Request.QueryString["ImageID"]); 
      //Gets extenion format. 
      var extension = (from q in CurrentContext.DisplayPhotos 
          where q.UserID == id 
          select q.ContentType).FirstOrDefault(); 

      string name = reader["Name"].ToString(); 
      int endIndex = name.LastIndexOf('.'); 
      buffer = (byte[])reader["Data"]; 
      context.Response.Clear(); 
      context.Response.ContentType = "image/" + extension; 
      context.Response.BinaryWrite(buffer); 
      context.Response.Flush(); 
      context.Response.Close(); 
     } 
     reader.Close(); 

    } 
    finally 
    { 
     connection.Close(); 
    } 
} 

名=ファイル名 データは変換されたデータを=。

ファイルアップロードのための私の方法:

 protected void LinkButton4_Click(object sender, EventArgs e) 
    { 
     div_editProfile.Visible = true; 
     lbl_imgError.Visible = false; 
     if (up_ProImg.HasFile) 
     { 
      int fileLength = up_ProImg.PostedFile.ContentLength; 
      string fileName = up_ProImg.PostedFile.FileName; 
      string fileType = up_ProImg.PostedFile.ContentType; 
      byte[] img = new byte[fileLength]; 

      var que = from y in CurrentContext.DisplayPhotos 
         where y.Name == fileName 
         select y; 
      if (que.Count() > 0) 
      { 
       lbl_imgError.Visible = true; 
       lbl_imgError.Text = ""; 
      } 
      else 
      { 
       up_ProImg.PostedFile.InputStream.Read(img, 0, fileLength); 
       try 
       { 
        using (DataContextDataContext udp = new DataContextDataContext()) 
        { 
         DisplayPhoto DisP = new DisplayPhoto(); 
         DisP.Name = fileName; 
         DisP.ContentType = fileType; 
         DisP.DateLastModified = DateTime.Now; 
         DisP.PhotoId = CurrentUser.UserId; 
         DisP.Data = img; 
         DisP.IsPhoto = true; 
         DisP.IsActive = true; 
         DisP.UserID = CurrentUser.UserId; 
         udp.DisplayPhotos.InsertOnSubmit(DisP); 
         udp.SubmitChanges(); 
        } 
       } 
       finally 
       { 
        var check = from q in CurrentContext.DisplayPhotos 
           where q.Name == fileName 
           select q; 

        if (check.Count() > 0) 
        { 
         lbl_imgError.Visible = true; 
         lbl_imgError.Text = "Image uploaded."; 
        } 
        else 
        { 
         lbl_imgError.Visible = true; 
         lbl_imgError.Text = "Failed to connect to database."; 
        } 
       } 
      } 
     } 
     else 
     { 
      lbl_imgError.Visible = true; 
      lbl_imgError.Text = "No image to upload."; 
     } 
    } 
+1

にあなたがのImageButtonのための画像のソースを割り当てる設定されている場合、私は表示されません。あなたが正しい方向に向けるかもしれないこの記事を見てください。 http://www.codeproject.com/Articles/33310/C-Save-and-Load-Image-from-Database – pmcilreavy

+0

codeprojectメソッドが機能し、より良く適合するように修正しました。しかし、依然として依頼を使用しているので、私のウェブが1つ以上のイメージを引っ張ってきたので、何とかその部分を見つけ出す必要があります。 – StackUser4545

+0

これを見直して、divメソッドを取り除いてcodeprojectコードを捨て、useridシステムに基づいて行った。それは私がやろうとしているものに完全に合っている。 – StackUser4545

答えて

0

は、ToListメソッドメソッドを使用してみてください。

var que = from r in CurrentContext.Photos 
      select new 
      { 
       PhotoId = r.PhotoId, 
       Name = r.Name, 
       PhotoLink = r.SmallThumbnail 
      }.ToList() 


<asp:ImageButton ID="imgPhoto" runat="server" Width="80px" Height="80px" OnClick="imgPhoto_Click" ImageUrl="[PhotoLink]"CssClass="PhotoHandle"/> 

編集[PhotoLink]適切なデータ属性ASPコードで

関連する問題