问题描述
我正在创建一个网络应用程序。为此,我使用 Microsoft sql Server 2016 (SP1-GDR) (KB4505219) - 13.0.4259.0 (X64) 和 ASP.NET MVC 5。
在我的数据库中,我有一个包含 PDF 文件的表格。我已将文件内容作为 blob 存储在该表中。我还在那个表中存储了文件名。
现在我想让我的客户可以下载多个 PDF 文件。应连接 PDF 文件。因此,如果客户请求所有 PDF 文件,他或她应该将所有 PDF 文件合并为一个 PDF 文件。
- 首先是连接 sql Server 查询中的 PDF 文件。因此,当我从数据库中获取 blob 时,它已经连接在一起,我无需在 C# 代码中进一步执行任何操作。
- 其次是从数据库中获取所有 blob 并在 C# 中连接这些 blob。
我尝试使用 sql Server 中的 COALESCE
函数来连接 sql Server 中的 blob。
DECLARE @blobcontent varbinary(max);
SELECT
@blobcontent = COALESCE(@blobcontent,0x0) + FileTable.fileContent
FROM
FileTable;
SELECT @blobcontent;
这对我不起作用。
因此,在从数据库中获取所有 blob 后,我尝试在 C# 中连接 blob。我尝试创建一个新的字节数组变量并将所有 blob 放在新的字节数组中。
...
var file1 = GetFileById(1); /*the function GetFileById(int id) returns a tuple (byte[],string) with the file-content as the first Element and the file-name as the second element*/
var file2 = GetFileById(2);
var concatenatedFile = file1.Item1.Concat(file2.Item1).ToArray();
...
这对我也不起作用。
解决方法
好的。正如我所怀疑的那样,不可能以这种形式连接 blob(请参阅 PSK 的评论)。我将通过简单地向客户端提供 zip 文件来解决这个问题,因为我不想为此包含任何其他库。