내가 왜 내가하려는 일을해야하는지 설명하려고하면 오랜 시간이 걸릴 것이지만 기본적으로 다음과 같습니다. 사용자가 선택할 수있는 FileUpload 컨트롤이 있습니다. Jpeg 파일을 업로드하면 그 파일을 바이트로 변환하고 Image 컨트롤의 소스로 사용하려고합니다. BinaryReader.ReadBytes가 문자열로 변환 될 때
내 코드
이 하나입니다 바이트 배열 확인을 찾고,하지만 난 문자열로 변환 할 때 내가 내가 대신 같은 일을 다른 페이지가, 인식 할 수없는 문자가 가득string fileName = Server.MapPath("~/TempImages") + @"\foto.jpg";
fileUpload1.SaveAs(fileName);
System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
System.IO.BinaryReader binaryReader = new System.IO.BinaryReader(fs);
long byteLength = new System.IO.FileInfo(fileName).Length;
byte[] buffer = binaryReader.ReadBytes((Int32)byteLength);
fs.Close();
fs.Dispose();
string valor = System.Text.Encoding.UTF8.GetString(buffer);
img.ImageUrl = "data:image/jpg;base64," + valor;
파일에서 바이트를 얻는 것은 MySql 데이터베이스에서 가져오고 같은 System.Text.Encoding.UTF8.GetString
을 사용하면 문제가 해결됩니다.
DataView dv = (DataView)SqlDataSource3.Select(DataSourceSelectArguments.Empty);
byte[] buffer = (byte[])dv.Table.Rows[0]["BIN_FOTO"];
string valor = System.Text.Encoding.UTF8.GetString(buffer);
img.ImageUrl = "data:image/jpg;base64," + valor;
이 SqlDataSource3의 선택은 간단한 Select BIN_FOTO from temp_image
입니다 :
UPDATE 요청으로 , 이것은 MySQL 데이터베이스에서 검색 할 때 내가 사용하는 코드입니다.
private string ImageToBase64String(System.Drawing.Image imageData, ImageFormat format)
{
string base64;
MemoryStream memory = new MemoryStream();
imageData.Save(memory, format);
base64 = System.Convert.ToBase64String(memory.ToArray());
memory.Close();
memory.Dispose();
return base64;
}
그런 다음 나는 데이터베이스에
base64
변수를 저장 : 나는 코드가 내가 캡처 웹캠이 이미지를 변환하는 데 사용할, 웹캠 캡처 WPF 프로그램에서 데이터베이스에이 값을 저장합니다.
희망이 내 문제
문자열에 이미지 바이트 배열을 해석하지 않을
그런데,이 코드의
BinaryReader
에 대한 필요가 없습니다 너에게 무엇이든지 알게 해줘. 이미지가 MySql에 어떻게 저장되는지 보는 것은 흥미로울 것입니다. 저장 또는 검색 중 일부 변환이있을 가능성이 있습니다. –MySql에 저장하는 방법을 보여주기 위해 업데이트했습니다. –