我正在开发一个在sql server DB中存储图像的Web应用程序。我使用'Image'数据类型将图像存储在表中。当用户点击按钮时,我想给“打开/另存为”选项。如何在c#asp.net中做到这一点?
我正在使用的代码位于
之下 conn = connect.getConnection();
selcmd = new System.Data.SqlClient.SqlCommand("select image from tblQuestion where qid=" + context.Request.QueryString["qid"], conn);
conn.Open();
rdr = selcmd.ExecuteReader();
while (rdr.Read())
{
context.Response.ContentType = "image/jpg";
context.Response.AddHeader("content-disposition","attachment;filename=Tr.png");
context.Response.BinaryWrite((byte[])rdr["image"]);
}
但仍然无法正常工作
答案 0 :(得分:2)
正如你所看到的那样,除了眼睛之外还有更多的东西,希望那些关键点加上谷歌的力量将让你前进:)
答案 1 :(得分:0)
答案 2 :(得分:0)
您必须将图像转换为字节数组。使用以下代码进行投射:
if (dataReader["Image"] != DBNull.Value)
{
byte[] storedImage = (byte[])(dataReader["Image"]);
orderMaster.Photo = storedImage;
}
此处图像字段位于DB中的图像类型中。
然后使用system.Drawing从字节数组创建图像,并将位置指向显示图像的控件。
private void byteArrayToImage(byte[] byteArray)
{
if (byteArray != null)
{
MemoryStream ms = new MemoryStream(byteArray);
System.Drawing.Image img = System.Drawing.Image.FromStream(ms, false, false);
/*last argument is supposed to turn Image data validation off*/
img.Save(Server.MapPath("Photo/image.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg);
ms.Close();
//Image1.ImageUrl = Server.MapPath("Photo/image.jpg");
imgViewPhoto.ImageUrl = ConfigurationManager.AppSettings["PhotoFolder"].ToString() + "Photo/image.jpg";
}
}
希望这会对你有帮助..
答案 3 :(得分:0)
检查此代码.. 我会将任何东西存储在数据库中并从数据库中检索..
Dim con As New SqlConnection
con.ConnectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString
con.Open()
Dim objbytes() As Byte
ReDim objbytes(FileUpload1.PostedFile.InputStream.Length)
' Dim query As String = "insert into files(files,ext) values('" & objbytes & "','" & FileUpload1.FileName.Substring(FileUpload1.FileName.LastIndexOf(".") + 1) & "'"
Dim query As String = "insert into files(files,ext) values(@files,@ext)"
FileUpload1.PostedFile.InputStream.Read(objbytes, 0, FileUpload1.PostedFile.InputStream.Length)
Dim cmd As New SqlCommand(query, con)
cmd.Parameters.AddWithValue("@files", objbytes)
cmd.Parameters.AddWithValue("@ext", FileUpload1.FileName.Substring(FileUpload1.FileName.LastIndexOf(".") + 1))
cmd.ExecuteNonQuery()
'FileUpload1.PostedFile.InputStream.Read(objbytes, 0, FileUpload1.PostedFile.InputStream.Length)
Dim ds As New DataSet
Dim adp As New SqlDataAdapter("select files,ext from files", con)
adp.Fill(ds)
For i As Integer = 0 To ds.Tables(0).Rows.Count - 1
' Dim enc As System.Text.Encoding = System.Text.Encoding.ASCII
'Dim objbyte1s() As Byte = enc.GetBytes(ds.Tables(0).Rows(i).Item(0))
System.IO.File.WriteAllBytes(Server.MapPath("~/files/file1." & ds.Tables(0).Rows(i).Item(1)), ds.Tables(0).Rows(i).Item(0))
'Response.BinaryWrite(ds.Tables(0).Rows(i).Item(0)))
Next