从 SQL 服务器检索文件,用扩展图标显示它们并阅读它们
Retrieve files from SQL Server, display them with extension's icon and read them
我已将 table 中的文件保存为二进制文件。我需要检索它们,显示文件名及其扩展图标并打开它。
我已经使用 SQL 服务器查询来检索与频道相关的所有文件并将它们存储在数据 table 中。之后,我遍历每个文件以获取其名称、扩展名和数据。现在我需要显示文件。
public void getAttachedFiles(int id)
{
string fileName;
string fileExtension;
string fileData;
SqlConnection conn = new SqlConnection();
conn.ConnectionString = Utilities.ConnectionString;
conn.Open();
string query = "select cf.Name, cf.ContentType, cf.Data from [dbo].[Channels_Files] cf where cf.ChannelId = "+ id;
DataTable listFiles = new DataTable();
SqlDataAdapter adp = new SqlDataAdapter(query, conn);
adp.Fill(listFiles);
foreach (DataRow dataRow in listFiles.Rows)
{
fileName = dataRow.ItemArray[0].ToString();
fileExtension = dataRow.ItemArray[1].ToString();
fileData = dataRow.ItemArray[2].ToString();
displayFile(fileName,fileExtension,fileData);
}
}
displayFile
函数必须将文件从二进制转换并显示。我需要知道如何转换每个文件并显示文件列表,其中每个文件都将显示其扩展名图标。
我看过这篇文章,但不清楚。
Retrieve files from SQL Server database
我按如下方式解决了我的问题:
我创建了一个 listView 并向其添加了一个 imageList。
我将扩展程序的图标添加到图像列表中。
然后我检索了所选频道的文件二进制数据、名称和扩展名。
public void getAttachedFiles(int id)
{
imageList.Items.Clear();
docList.Items.Clear();
string fileName;
string fileExtension;
byte[] fileData;
SqlConnection conn = new SqlConnection();
conn.ConnectionString = Utilities.ConnectionString;
conn.Open();
string query = "select cf.Data,cf.Name,cf.ContentType from[dbo].[Channels_Files] cf where cf.ChannelId =" + id;
DataTable listFiles = new DataTable();
SqlDataAdapter adp = new SqlDataAdapter(query, conn);
adp.Fill(listFiles);
foreach (DataRow dataRow in listFiles.Rows)
{
fileData = (byte[])dataRow.ItemArray[0];
fileName = dataRow.ItemArray[1].ToString();
fileExtension = dataRow.ItemArray[2].ToString();
displayFile(fileName,fileExtension, fileData);
}
}
然后我将项目添加到 listView 我将文件的 ID 保存为 Item 键以及 imageView 的文件名和扩展图像索引。
docList.Items.Add(Convert.ToBase64String(fileData), fn, 3);
然后选择合适的图标。
private void displayFile(string fn,string fe, byte[] fileData)
{
switch(fe.ToString())
{
case ".pdf":
docList.Items.Add(Convert.ToBase64String(fileData), fn,0);
break;
case ".doc":
case ".docx":
docList.Items.Add(Convert.ToBase64String(fileData), fn, 2);
break;
case ".xls":
case ".xlsx":
docList.Items.Add(Convert.ToBase64String(fileData), fn, 1);
break;
case ".dwg":
docList.Items.Add(Convert.ToBase64String(fileData), fn, 3);
break;
case ".bmp":
case ".jpg":
case ".jpeg":
imageList.Items.Add(Convert.ToBase64String(fileData), fn, 5);
break;
default:
docList.Items.Add(Convert.ToBase64String(fileData), fn, 4);
break;
}
}
我已将 table 中的文件保存为二进制文件。我需要检索它们,显示文件名及其扩展图标并打开它。
我已经使用 SQL 服务器查询来检索与频道相关的所有文件并将它们存储在数据 table 中。之后,我遍历每个文件以获取其名称、扩展名和数据。现在我需要显示文件。
public void getAttachedFiles(int id)
{
string fileName;
string fileExtension;
string fileData;
SqlConnection conn = new SqlConnection();
conn.ConnectionString = Utilities.ConnectionString;
conn.Open();
string query = "select cf.Name, cf.ContentType, cf.Data from [dbo].[Channels_Files] cf where cf.ChannelId = "+ id;
DataTable listFiles = new DataTable();
SqlDataAdapter adp = new SqlDataAdapter(query, conn);
adp.Fill(listFiles);
foreach (DataRow dataRow in listFiles.Rows)
{
fileName = dataRow.ItemArray[0].ToString();
fileExtension = dataRow.ItemArray[1].ToString();
fileData = dataRow.ItemArray[2].ToString();
displayFile(fileName,fileExtension,fileData);
}
}
displayFile
函数必须将文件从二进制转换并显示。我需要知道如何转换每个文件并显示文件列表,其中每个文件都将显示其扩展名图标。
我看过这篇文章,但不清楚。
Retrieve files from SQL Server database
我按如下方式解决了我的问题:
我创建了一个 listView 并向其添加了一个 imageList。
我将扩展程序的图标添加到图像列表中。
然后我检索了所选频道的文件二进制数据、名称和扩展名。
public void getAttachedFiles(int id)
{
imageList.Items.Clear();
docList.Items.Clear();
string fileName;
string fileExtension;
byte[] fileData;
SqlConnection conn = new SqlConnection();
conn.ConnectionString = Utilities.ConnectionString;
conn.Open();
string query = "select cf.Data,cf.Name,cf.ContentType from[dbo].[Channels_Files] cf where cf.ChannelId =" + id;
DataTable listFiles = new DataTable();
SqlDataAdapter adp = new SqlDataAdapter(query, conn);
adp.Fill(listFiles);
foreach (DataRow dataRow in listFiles.Rows)
{
fileData = (byte[])dataRow.ItemArray[0];
fileName = dataRow.ItemArray[1].ToString();
fileExtension = dataRow.ItemArray[2].ToString();
displayFile(fileName,fileExtension, fileData);
}
}
然后我将项目添加到 listView 我将文件的 ID 保存为 Item 键以及 imageView 的文件名和扩展图像索引。
docList.Items.Add(Convert.ToBase64String(fileData), fn, 3);
然后选择合适的图标。
private void displayFile(string fn,string fe, byte[] fileData)
{
switch(fe.ToString())
{
case ".pdf":
docList.Items.Add(Convert.ToBase64String(fileData), fn,0);
break;
case ".doc":
case ".docx":
docList.Items.Add(Convert.ToBase64String(fileData), fn, 2);
break;
case ".xls":
case ".xlsx":
docList.Items.Add(Convert.ToBase64String(fileData), fn, 1);
break;
case ".dwg":
docList.Items.Add(Convert.ToBase64String(fileData), fn, 3);
break;
case ".bmp":
case ".jpg":
case ".jpeg":
imageList.Items.Add(Convert.ToBase64String(fileData), fn, 5);
break;
default:
docList.Items.Add(Convert.ToBase64String(fileData), fn, 4);
break;
}
}