2014-07-26 4 views
0

질문이 있습니다. 가능한 경우 알 수 없습니다. 우선이 코드 varbinarybyte[] (C#을)에서 SQL Server 데이터베이스에서 파일을 저장 한 :SQL Server 데이터베이스에서 WPF 파일 표시

OpenFileDialog fileDialog = new OpenFileDialog(); 
fileDialog.Title = " Seleccione la foto del Usuario"; 
fileDialog.ShowDialog(); 

if (fileDialog.FileName != null) 
{ 
    ruta = fileDialog.FileName; 
    lblnomArchivo.Content = new BitmapImage(new Uri(ruta)); 
    //MessageBox.Show(path); 
} 

public byte[] ConvertToByteArray(string path) 
{ 
    byte[] ImageByte = null; 

    try 
    { 
     FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); 
     //BinaryReader br = new BinaryReader(fs); 
     //ImageByte = br.ReadBytes((int)fs.Length); 

     Byte[] data = new byte[fs.Length]; 
     fs.Read(data, 0, Convert.ToInt32(fs.Length)); 
     ImageByte = data; 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 

    return ImageByte; 
} 

난 그냥 인스턴스에 대한 데이터 그리드의 셀에, 일부 WPF 요소에서이 파일을 검색 할 나는 파일의 이름을 얻을 수 있습니다 다음을 엽니 다 ....

을 그리고 당신은 파일의 형식이 될 것입니다 무엇을 알 수없는 경우 파일은 파일 형식뿐만 아니라 이미지 형식

+0

데이터베이스에서 데이터를 검색하여 응용 프로그램에 표시하는 방법을 묻습니다. 또한 FileStream과 같은 IDisposables를 적절히 처리해야합니다. – dodexahedron

+0

예 "데이터베이스에서 데이터를 검색하여 응용 프로그램에 표시"하고 싶습니다. 그리고 변명합니다. WPF에서 새로운 것 같습니다. IDisposables로 무엇을 의미하는지 모르겠다. –

답변

1

해야한다 응용 프로그램을 작성할 때 사용할 수있는 대체 방법은 파일을 운영 체제로 전달하고 OS가 적절한 응용 프로그램을 선택하도록하는 것입니다. 파일을 엽니 다.

그래서 먼저 데이터베이스에서 그것을 얻을 앱에서, 다음 (올바른 확장자를 포함)을 저장, 운영 체제에 파일을 전달합니다

System.Diagnostics.Process.Start(filePathNameAndExtension); 

이 일을하기 전에 당신이의 확장을 확인할 수 있습니다 파일 이름 :

var extension = Path.GetExtension(filePathNameAndExtension).ToLower(); 

select(extension) 
{ 
    case ".jpg": 
    case ".png": 
    case ".jpeg": 
     type = Type.Image; 
     break; 
    case ".txt": 
     type = Type.Text; 
     break; 
    default: 
     type = Type.Unknown; 
     break; 
} 

select(type) 
{ 
    case Type.Unknown: 
     System.Diagnostics.Process.Start(filePathNameAndExtension); 
     break; 
    case Type.Image: 
     myImage = new Bitmap(filePathNameAndExtension); 
     break; 
    ..... 
} 
관련 문제