连接两个另存为 blob 的 PDF 文件

问题描述

我正在创建一个网络应用程序。为此,我使用 Microsoft sql Server 2016 (SP1-GDR) (KB4505219) - 13.0.4259.0 (X64) 和 ASP.NET MVC 5。

在我的数据库中,我有一个包含 PDF 文件的表格。我已将文件内容作为 blob 存储在该表中。我还在那个表中存储了文件名。

现在我想让我的客户可以下载多个 PDF 文件。应连接 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 文件来解决这个问题,因为我不想为此包含任何其他库。