如何将多个tiff作为http响应返回?

时间:2018-04-30 13:27:45

标签: c#

我有tiff存储在数据库中,通过DIN搜索可以返回一个或多个tiff。我正在创建这个返回tiff的端点,在我的代码下面我只得到第一页。我的想法是:数据库返回每个页面的字节数组,组合这些数组将产生一个包含所有页面的字节数组并将其传递给响应。知道为什么这只返回第一页吗?

byte[] imagesArray = new byte[0];
foreach(DataRow row in dt.Rows)
{
    image = row["Image_blob"];
    imagesArray = addArrays(imagesArray, image)
}

response.Content = new ByteArrayContent(ImagesArray);
return response;



static byte[] addArrays(byte[] arrayA, byte[] arrayB)
    {
        byte[] outputBytes = new byte[arrayA.Length + arrayB.Length];
        Buffer.BlockCopy(arrayA, 0, outputBytes, 0, arrayA.Length);
        Buffer.BlockCopy(arrayB, 0, outputBytes, arrayA.Length, arrayB.Length);
        return outputBytes;
    }

1 个答案:

答案 0 :(得分:0)

如果你在一个"文件中连接tiff文件"然后将其读作TIFF,您将只看到第一个文件。第一个TIFF开头的TIFF标题仅描述第一个图像的内容。超出第一个TIFF的数据将被忽略。您需要将TIFF文件作为响应的多个部分发送。 (谷歌http多部分回复)在这种情况下,您将发送几个"文件"。或者您需要构建一个包含所有图像的TIFF文件。我不确定你是怎么做到的。 https://en.wikipedia.org/wiki/TIFF#Multiple_subfiles意味着您需要将所有其他页面添加到第一个tiff标头作为子图像。