2017-02-10 66 views
0

我正在通過WebService從Web下載.TIFF圖像。我收到的圖像爲byte []。我想要下載這些圖片,並且我正在使用此代碼:將多個字節[]寫入響應

Response.ClearContent(); 
Response.ContentType = MimeType; // images/tiff 
Response.AddHeader("Content-Disposition", "attachment;filename=\"" + Convert.ToString(FileName) + "\""); 
byte[] FileContent = Convert.FromBase64String(getFileContentAsBase64String()); // Get the file content 
Response.BinaryWrite((byte[])FileContent); 
Response.Flush(); 

這是按預期方式使用一個文件。我有一種情況,我想在此時下載多個文件,但將它們顯示爲單個文件。目前我正在使用此代碼,但它不能按預期工作。它正在下載圖像,但只是第一個。我不確定第二名和第三名會發生什麼。

long PageNoLong = long.Parse(PageNo); // Number of pages (files), in this case we have 3     

Response.ClearContent(); 
Response.ContentType = MimeType; 
string FileName = "filename.tiff"; 
Response.AddHeader("Content-Disposition", "attachment;filename=\"" + Convert.ToString(FileName) + "\""); 

//In this case, the loop loops three times, returning three byte[] which i write to the Response 
for (int i = 1; i < PageNoLong+1; i++) 
{         
    byte[] FileContent = Convert.FromBase64String(getFileContentAsBase64String());                         
    Response.BinaryWrite((byte[])FileContent); 
} 

Response.Flush(); 

如何將這三個字節[]合併到一個.tiff文件中?

+1

那麼什麼是你的問題:如何在連續執行多個HTTP請求?然後顯示所有相關的代碼,你可能不會處理相關的對象。或者是你的問題如何連接字節數組?事實上,我認爲這段代碼的功能與預期完全一樣,它附加了三個TIFF文件。你不能這樣做,並稱之爲一個TIFF AFAIK。 – CodeCaster

+1

生成文件的文件大小是否與總共收到的字節數相匹配?我有點困惑;看起來好像您將接收到的文件連接成單個文件;目標是什麼? – Codor

+2

您確定只能連接多個TIFF圖像的二進制內容嗎?我認爲這不會起作用,很可能只有第一張圖像纔會以這種方式顯示。您可能需要將3張圖像實際合併爲一個新的有效TIFF文件。 – bassfader

回答

-1

您必須首先使用其他方法合併圖像,然後下載合併的圖像。你不能僅僅結合多個字節[],因爲它並沒有真正地結合這些文件。

想一想,TIFF文件如何被合併?一個在另一個之上?在彼此旁邊?新圖像的大小是多少?

退房下面的鏈接瞭解如何在C#合併圖像

Merging two images in C#/.NET

+0

您建議將另一張圖片粘貼到另一張圖片上?不是真正的解決方案... –

+0

沒有真正粘貼它們,他問「我想在當時下載多個文件,但將它們顯示爲單個文件。」我會假設這意味着合併的圖像。您不能簡單地通過組合字節流來合併多個圖像。如果他想「將它們顯示爲單個文件」,我暗示他需要將圖像合併爲單個圖像。不確定我的答案是否真的值得投票。 – MikeS

+0

請參閱您建議的解決方案鏈接:它將一個圖像放在另一個圖像的上面。 –