C# 将两个二进制文件合并为一个以供下载

C# 将两个二进制文件合并为一个以供下载,c#,sql-server,concat,varbinary,C#,Sql Server,Concat,Varbinary,我有一个sql server数据库,它将txt文件存储在varbinary列中。我有一个gridview控制器C,它列出了存储的文件。我希望发生的是: 如果从gridview中选择了两个或多个文件,应用程序或数据库对我来说并不重要 将所有选定的文件内容合并到一个用户可以下载的文件中 因此,如果文件1是一个包含单词Hello的文本文件,而文件2是一个包含单词world的文本文件,那么应用程序将从这两个文件中读取内容,并创建一个包含Hello world的新测试文件 欢迎所有建议。实现这一点的一种方

我有一个sql server数据库,它将txt文件存储在varbinary列中。我有一个gridview控制器C,它列出了存储的文件。我希望发生的是: 如果从gridview中选择了两个或多个文件,应用程序或数据库对我来说并不重要 将所有选定的文件内容合并到一个用户可以下载的文件中

因此,如果文件1是一个包含单词Hello的文本文件,而文件2是一个包含单词world的文本文件,那么应用程序将从这两个文件中读取内容,并创建一个包含Hello world的新测试文件


欢迎所有建议。

实现这一点的一种方法是让查询为您连接数据并从中创建文件

比如,

从表中选择convertvarchar1024、varbinaryA+convertvarchar1024、varbinaryB

您的主题读取两个二进制文件,但您给出的示例是两个文本文件。这是两件完全不同的事情。连接文本文件是简单而直接的。您可以使用以下内容:

string firstFile = System.IO.File.ReadAllText("myfile1.txt");
string secondFile = System.IO.File.ReadAllText("myfile2.txt");
然后将连接的结果firstFile++secondFile返回给用户


但是,对于二进制文件,如果将它们连接起来,它们将不再工作。例如,firstFile.exe和secondFile.dll的串联对任何事情都没有用处。如果您想为用户提供二进制文件的单一下载,我建议将它们添加到一个压缩文件(例如Zip文件)中,并提供该文件作为下载。您的用户可以提取文件并使用它们。

我想您是在问如何从数据库中读取数据,然后将所有数据合并到一个文件中。如果这是正确的,你可以在谷歌上搜索大部分内容,然后回来问我们关于你的实现的具体问题。这只是一个要求。你试过的代码在哪里?我不知道该试什么。这不是数据库中的文本。这些是二进制文件。因此需要打开文件,从中读取数据,然后将数据合并到一个文件中。这是一个遗留系统,这是一个我不知道如何处理的新需求。如果由我决定的话,我只会存储来自Start的文件文本。我想这会管用的。我明天会测试它。文本文件和二进制文件之间的混淆是:该文件作为文本文件存在于用户计算机上,然后当用户上传它时,它被转换为varbinary。因此,由于它存储在数据库中,因此它不是文本文件。它不存储在服务器文件系统上。因此,需要将数据从二进制转换回文本,然后进行连接。需要下载连接的文件,而不是单个文件。在这种情况下,您必须将varbinary字段读入内存流,并根据需要,使用流写入新的单个文本文件并在响应中返回;或者b使用流在一个zip文件中创建文本文件,并在响应中返回。当然,您总是可以从varbinary在服务器上创建临时文件,然后像我提到的那样使用System.IO.File读取它们,但是在您的情况下使用内存流要高效得多。