来自SQL Server的

时间:2016-05-18 08:46:56

标签: c# sql-server wpf linq

我正在开发一个项目,我需要从SQL Server数据库下载音频和视频文件。我正在使用WPF来做到这一点。这时,我已经能够在GridView中显示我的数据库中允许下载的所有文件。这是项目启动时的样子:

enter image description here

我创建了一个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下载文件,但它返回一个没有任何扩展名的空白文件。

我需要的是,点击下载后,它会下载特定文件及其扩展名!

1 个答案:

答案 0 :(得分:0)

如果你的其余代码是正确的,要从完整路径中检索FileName,请执行以下操作:

string[] strPath = fileName.Split(Convert.ToChar(@"\"));
fileName = strPath[strPath.Length - 1];

上面的代码将为您提供扩展名为的FileName。

要从中检索扩展名,您只需要以这种方式提取它:

string extension = Path.GetExtension(fileName);