在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元素中检索这个文件,例如在数据网格的单元格中我可以得到文件的名称然后打开它....
文件可以是任意文件格式而不仅仅是图像格式
如果你在编写应用程序时不知道文件的类型,你可以使用的备用方法是将文件传递给操作系统,并让操作系统选择合适的应用程序来打开文件。
所以首先从数据库中获取它并保存它(包括正确的扩展名),然后,在应用程序中,将文件传递给操作系统:
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;
.....
}