我正处于这样一种情况,我想在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());
}
}
该项目如何运作的图像。
http://i.stack.imgur.com/dqYMe.jpg
您可以从此处http://www.shabdar.org/sql-server/121-store-or-save-files-in-sql-server-database-using-c.html
下载此项目答案 0 :(得分:1)
“已知文件类型的扩展名”的系统设置是什么?
转到Windows资源管理器,按Alt,选择“工具|文件夹选项”,选择“查看”选项卡,并选中“隐藏已知文件类型的扩展名”?如果是,请取消勾选并单击“确定”。
如果那是问题,现在一切都应该没问题! :)
答案 1 :(得分:0)
将原始文件路径存储在数据库中时,只需使用System.IO.Path.GetFileName("")
即可将文件名扩展名为。然后
您可以在计算机上创建要保存文件的新路径。
答案 2 :(得分:0)
您可以使用System.IO.Path.GetExtension()
获取文件扩展名:
string fileName = @"C:\a\b\c\test.mp3";
string extension = System.IO.Path.GetExtension(fileName);