이미지 테이블이있는 SQL Server (2008 R2)를 가지고 있는데이 테이블에는 이미지 형식의 열이 있습니다. 내 이미지를이 열에 삽입하십시오.ASP.NET 웹 서비스를 사용하여 SQL Server에서 이미지 검색
Stream fs = FileUpload1.PostedFile.InputStream;
BinaryReader br = new BinaryReader(fs);
Byte[] bytes = br.ReadBytes((Int32)fs.Length);
//insert the file into database
string strQuery = "insert into pm005.images(imageName, type, alt, img)" + " values (@Name, @ContentType, @Alt, @Data)";
SqlCommand cmd = new SqlCommand(strQuery);
cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = filename;
cmd.Parameters.Add("@ContentType", SqlDbType.VarChar).Value = contenttype;
cmd.Parameters.Add("@Alt", SqlDbType.VarChar).Value = TextBox1.Text;
cmd.Parameters.Add("@Data", SqlDbType.Binary).Value = bytes;
InsertUpdateData(cmd);
lblMessage.ForeColor = System.Drawing.Color.Green;
lblMessage.Text = "File Uploaded Successfully";
private Boolean InsertUpdateData(SqlCommand cmd)
{
// Open a connection the the SQL Server
SqlConnection con = new SqlConnection();
con.ConnectionString = "server=sql-server;integrated security=SSPI;database=pm005";
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
try
{
con.Open();
cmd.ExecuteNonQuery();
return true;
}
catch (Exception ex)
{
Response.Write(ex.Message);
return false;
}
finally
{
con.Close();
con.Dispose();
}
}
삽입이 true를 반환하고 데이터베이스의 데이터를 볼 수 있기 때문에 정상적으로 작동한다고 생각됩니다.
그러나 나는 내 인생을 위축 할 수 없다. 나는이 이미지를 어떻게 되찾았는지 보았다. 특히 내가 원하는 것은 내 웹 서비스를 호출하고 imageID를 전달하고 이미지 (및 이미지 만)를 반환 할 수있게하는 것입니다. PHP로 완성 된 것과 매우 흡사하다. 이것은 지금 사용하는 코드입니다. 내가 너무 많은 튜토리얼을 검토 한
System.ArgumentException: The path is not of a legal form.
at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength)
at System.IO.Path.GetFullPathInternal(String path)
at System.IO.Path.GetFullPath(String path)
at System.Drawing.IntSecurity.UnsafeGetFullPath(String fileName)
at System.Drawing.IntSecurity.DemandReadFileIO(String fileName)
at System.Drawing.Image.FromFile(String filename, Boolean useEmbeddedColorManagement)
at WebService2.Service1.getImage(Int32 imageID, String uName, String pword)
, 그리고 "PHP를 사용"을 제외한 모든 고체 답변을 찾을 : 오류를 제공
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public System.Drawing.Image getImage(int imageID, string uName, string pword)
{
string str="";
try
{
SqlCommand cmd = getSQLCommand("SELECT img FROM pm005.images WHERE id="+imageID);
byte[] Img = (byte[])cmd.ExecuteScalar();
// Convert the image record to file stream and display it to picture control
str = Convert.ToString(DateTime.Now.ToFileTime());
FileStream fs = new FileStream(str, FileMode.CreateNew, FileAccess.Write);
fs.Write(Img, 0, Img.Length);
fs.Flush();
fs.Close();
}
catch
{
}
finally
{
}
System.Drawing.Image theImage = System.Drawing.Image.FromFile(str);
return theImage;
}
. 내가해야한다면, 분명히 ASP.NET에서 그것을 할 수있는 방법이 있어야만합니까? 전체 파일 경로를 지정
전체 경로가 없으며 이미지가 DB에 저장됩니다. –
DB에서 이미지를 검색 할 때 디스크에 쓰려고합니다. 호출 스택에서 'System.Drawing.Image.FromFile'이 실패하는 것을 볼 수 있습니다. 매개 변수의 첫 번째 인수에 대해 filePath가 필요한 'FileStream' 메서드의 6 번째 오버로드를 사용하고 있는지 다시 한 번 확인할 수 있습니까? –
예, 그렇습니다. 자습서에서 말한 것입니다. 나는 내가 왜 그 길을 그냥 지나가는 지 모르겠다. –