我有疑问,我不知道是否有可能。首先,我使用以下代码在byte[]
(C#)到varbinary
的SQL Server数据库中保存了一个文件:
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元素中检索此文件,在datagrid的单元格中,例如,我可以获取文件的名称然后打开它....
文件应该是任何文件格式,而不仅仅是图像格式
答案 0 :(得分:1)
如果您在编写应用程序时不知道文件的类型,可以使用的回退方法是将文件传递给操作系统,并让操作系统选择合适的应用程序来打开文件。
首先从数据库中获取并保存(包括正确的扩展名),然后在应用程序中将文件传递给操作系统:
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;
.....
}