在WPF中显示来自SQL Server数据库的文件

本文关键字:Server 数据库 文件 SQL WPF 显示 | 更新日期: 2023-09-27 18:14:53

我有一个问题,我不知道是否可能。首先,我在SQL Server数据库中保存了一个文件,从byte[] (c#)到varbinary,代码如下:

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元素中检索这个文件,例如在数据网格的单元格中我可以得到文件的名称然后打开它....

文件可以是任意文件格式而不仅仅是图像格式

在WPF中显示来自SQL Server数据库的文件

如果你在编写应用程序时不知道文件的类型,你可以使用的备用方法是将文件传递给操作系统,并让操作系统选择合适的应用程序来打开文件。

所以首先从数据库中获取它并保存它(包括正确的扩展名),然后,在应用程序中,将文件传递给操作系统:

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;
    .....
}