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.";
}
}
にあなたがのImageButtonのための画像のソースを割り当てる設定されている場合、私は表示されません。あなたが正しい方向に向けるかもしれないこの記事を見てください。 http://www.codeproject.com/Articles/33310/C-Save-and-Load-Image-from-Database – pmcilreavy
codeprojectメソッドが機能し、より良く適合するように修正しました。しかし、依然として依頼を使用しているので、私のウェブが1つ以上のイメージを引っ張ってきたので、何とかその部分を見つけ出す必要があります。 – StackUser4545
これを見直して、divメソッドを取り除いてcodeprojectコードを捨て、useridシステムに基づいて行った。それは私がやろうとしているものに完全に合っている。 – StackUser4545