【发布时间】:2019-01-31 22:49:36
【问题描述】:
我已将表中的文件保存为二进制文件。我需要检索它们,显示带有扩展名图标的文件名并打开它。
我使用 SQL Server 查询来检索与频道相关的所有文件并将它们存储在数据表中。之后,我循环访问每个文件以获取其名称、扩展名和数据。现在我需要显示文件。
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 函数必须将文件从二进制转换并显示出来。我需要知道如何转换每个文件并显示文件列表,其中每个文件都将显示其扩展名图标。
我查过这篇文章,但不清楚。
【问题讨论】:
-
SQL Injection alert - 您应该不将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入 - 查看Little Bobby Tables
-
文件是什么类型的,你打算如何显示它们?
-
感谢您的回复。文件类型主要是pdf、图片和autocad文件。 @尼克
-
显示图像很容易。如果您仅面向 Windows 10,则可以通过 Edge 和 WebView 显示 PDF。但是,对于 Autocad 文件,您需要寻找一些允许集成的查看器。绝非易事。至于图标,如果你只有这些,只需将它们的图标提取到 ICO 文件中并显示出来。如果你想实现 Explorer 所做的,我可以告诉你,这是一项艰巨的努力@
标签: c# sql-server file-io