我正在开发一个项目,我需要从SQL Server数据库下载音频和视频文件。我正在使用WPF来做到这一点。这时,我已经能够在GridView中显示我的数据库中允许下载的所有文件。这是项目启动时的样子:
我创建了一个LINQ to SQL Classes,以便访问我的数据库数据并显示如下:
public partial class MainWindow : Window
{
DataClassesDataContext dc = new DataClassesDataContext(Properties.Settings.Default.TranscodeDBConnectionString);
public MainWindow()
{
InitializeComponent();
Title = "Transcode";
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
var query = from file in dc.Conversions
join codec in dc.Codecs on file.CodecID equals codec.CodecID
where file.Status.Equals("Pending")
select new
{
file.ConversionID,
file.FileName,
file.ContentType,
codec.Format
};
ConversionGrid.ItemsSource = query;
}
我需要通过点击下载按钮下载这些文件,这就是我所做的:
private void Download_Click(object sender, RoutedEventArgs e)
{
byte[] fileData;
string fileName = "";
var query = from file in dc.Conversions
where file.ConversionID.Equals("14")
select file;
fileName = query.First().FileName;
fileData = (byte[])query.First().File.ToArray();
Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
dlg.FileName = fileName;
dlg.DefaultExt = "";
Nullable<bool> result = dlg.ShowDialog();
if (result == true)
{
fileName = dlg.FileName;
}
}
在这里,我指定使用ConversionID 14下载文件,但它返回一个没有任何扩展名的空白文件。
我需要的是,点击下载后,它会下载特定文件及其扩展名!
答案 0 :(得分:0)
如果你的其余代码是正确的,要从完整路径中检索FileName,请执行以下操作:
string[] strPath = fileName.Split(Convert.ToChar(@"\"));
fileName = strPath[strPath.Length - 1];
上面的代码将为您提供扩展名为的FileName。
要从中检索扩展名,您只需要以这种方式提取它:
string extension = Path.GetExtension(fileName);