Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在将保存的文件从MS SQL Server 2008检索到本地驱动器时获取文件扩展名_C#_Sql Server 2008 - Fatal编程技术网

C# 如何在将保存的文件从MS SQL Server 2008检索到本地驱动器时获取文件扩展名

C# 如何在将保存的文件从MS SQL Server 2008检索到本地驱动器时获取文件扩展名,c#,sql-server-2008,C#,Sql Server 2008,我所处的环境是,我想在MS SQL SERVER 2008中保存和检索所有类型的文件,我可以保存和检索任何文件,但不带扩展名,例如,如果我将xyz.txt文件保存到数据库中,当我在本地驱动器上检索时,它看起来像xyz,没有扩展名,是的,如果我们手动提供扩展,那么我们可以看到它的内容 下面是我的表格图像 C#用于将任何文件类型保存到数据库的代码 private void cmdSave_Click(object sender, EventArgs e) { try

我所处的环境是,我想在MS SQL SERVER 2008中保存和检索所有类型的文件,我可以保存和检索任何文件,但不带扩展名,例如,如果我将xyz.txt文件保存到数据库中,当我在本地驱动器上检索时,它看起来像xyz,没有扩展名,是的,如果我们手动提供扩展,那么我们可以看到它的内容

下面是我的表格图像

C#用于将任何文件类型保存到数据库的代码

 private void cmdSave_Click(object sender, EventArgs e)
    {
        try
        {
            //Read File Bytes into a byte array
            byte[] FileData = ReadFile(txtFilePath.Text);

            //Initialize SQL Server Connection
            SqlConnection CN = new SqlConnection(txtConnectionString.Text);

            //Set insert query
            string qry = "insert into FilesStore (OriginalPath,FileData) values(@OriginalPath, @FileData)";

            //Initialize SqlCommand object for insert.
            SqlCommand SqlCom = new SqlCommand(qry, CN);

            //We are passing Original File Path and File byte data as sql parameters.
            SqlCom.Parameters.Add(new SqlParameter("@OriginalPath", (object)txtFilePath.Text));
            SqlCom.Parameters.Add(new SqlParameter("@FileData", (object)FileData));

            //Open connection and execute insert query.
            CN.Open();
            SqlCom.ExecuteNonQuery();
            CN.Close();

            //Close form and return to list or Files.
            this.Close();
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }
用于将文件从数据库检索到本地驱动器的C#代码

private void btnSaveFromDBToDisk_Click(object sender, EventArgs e)
    {
         try
         {
             //Check if a file is selected in Grid
             if (dataGridView1.CurrentCell ==null)
             {
                 MessageBox.Show("Select a file in Grid first.");
                 return;
             }

             int SelectedRow = dataGridView1.CurrentCell.RowIndex;
             string OriginalPath = DS.Tables[0].Rows[SelectedRow]["OriginalPath"].ToString();

             saveFileDialog1.FileName = OriginalPath;

             DialogResult DR = saveFileDialog1.ShowDialog();
             if (DR == DialogResult.OK)
             {
                 string FileName = saveFileDialog1.FileName;
                 //Get File data from dataset row.
                 byte[] FileData = (byte[])DS.Tables["FilesStore"].Rows[SelectedRow]["FileData"];
                 //Write file data to selected file.
                 using (FileStream fs = new FileStream(FileName, FileMode.Create))
                 {
                     fs.Write(FileData, 0, FileData.Length);
                     fs.Close();
                 }

                 MessageBox.Show("File saved successfully to ");
             }
         }
         catch(Exception ex)
         {
             MessageBox.Show(ex.ToString());
         }
    }
此项目如何工作的图像


当您在数据库中存储原始文件路径时,您可以从这里下载此项目,然后简单地使用
System.IO.Path.GetFileName(“”
)获取扩展名为的文件名。然后
您可以在计算机上创建一个新路径,用于保存文件。

您可以使用
System.IO.path.GetExtension()
获取文件扩展名:

string fileName = @"C:\a\b\c\test.mp3";
string extension = System.IO.Path.GetExtension(fileName);

系统对“已知文件类型的扩展名”的设置是什么

转到Windows资源管理器,按Alt键,选择“工具|文件夹选项”,选择“查看”选项卡,是否勾选了“隐藏已知文件类型的扩展名”?如果是,请取消勾选并单击“确定”


如果这就是问题所在,那么现在一切都应该正常了!:)

系统对“已知文件类型的扩展名”的设置是什么?转到Windows资源管理器,按Alt键,选择“工具|文件夹选项”,选择“查看”选项卡,是否勾选了“隐藏已知文件类型的扩展名”?如果是这样,请取消勾选并单击“确定”。然后,我按照您所说的检查了我的系统设置,哇,我得到了文件扩展名。。请你把这条评论贴在我的答案上,这样我就可以把它标记为“答案”完成了。这也发生在我身上。:)