C# 如何在将保存的文件从MS SQL Server 2008检索到本地驱动器时获取文件扩展名
我所处的环境是,我想在MS SQL SERVER 2008中保存和检索所有类型的文件,我可以保存和检索任何文件,但不带扩展名,例如,如果我将xyz.txt文件保存到数据库中,当我在本地驱动器上检索时,它看起来像xyz,没有扩展名,是的,如果我们手动提供扩展,那么我们可以看到它的内容 下面是我的表格图像 C#用于将任何文件类型保存到数据库的代码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
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键,选择“工具|文件夹选项”,选择“查看”选项卡,是否勾选了“隐藏已知文件类型的扩展名”?如果是这样,请取消勾选并单击“确定”。然后,我按照您所说的检查了我的系统设置,哇,我得到了文件扩展名。。请你把这条评论贴在我的答案上,这样我就可以把它标记为“答案”完成了。这也发生在我身上。:)