2013-04-10 92 views
0

我從我的主頁面傳遞圖像字節數組到處理程序。我無法使用會話。是否有可能通過查詢字符串中的字節數組我試過如何在查詢字符串中傳遞長字節數組?

imgPreview.ImageUrl=ImageHandler.ashx?imagebytes=" + System.Text.Encoding.UTF8.GetString(fileUploader.FileBytes); 

但它不工作。

+1

由於查詢字符串長度限制,這似乎不太可能:http://stackoverflow.com/questions/812925/what-is-the-maximum-possible-length-of-a-query-string – spender 2013-04-10 10:59:56

+3

糟糕的壞主意。 – 2013-04-10 11:00:46

+1

你根本就不這樣做。您不通過URL傳遞圖像數據。傳遞指向給定圖像的唯一標識符,並讓ImageHandler加載圖像。 – CodeCaster 2013-04-10 11:02:26

回答

1

這不起作用,因爲在你使用UTF-8編碼二進制數據的許多問題中。你真的想使用base64編碼,然後你可能還需要URL編碼。

兩者都會使您的網址長度膨脹考慮並可能會達到極限。

您需要使用某種排序後端標識標記映像,並將其傳遞到URL中。

如果您不能使用會話存儲(不應該用於圖像)或數據庫,您可以將圖像存儲在文件系統上。

0

不,你不能這樣做。查詢字符串長度有限制。這些限制因瀏覽器而異。

0

嘗試將圖像存儲到一個位置到文件系統,通過GET傳遞的位置和檢索第二腳本的圖像,查詢字符串要求有長度限制和圖像是很多字節。

0

冒着創造「我也是」的答案; Base64編碼將是唯一合理的方式來做到這一點,但它幾乎肯定(如肯定),而不是你真的想要這樣做。也許如果你提供了更多的上下文,那麼幫助解決方案會更容易。我想,如果我們談論的只是像圖標這樣的小圖像,它可能會起作用,但它仍然不是您想要的解決方案。查詢字符串並不意味着直接傳遞對象。它是爲了請求資源。正如其他人所建議的,您可以將圖像保存到磁盤上的文件並直接在URL中引用文件。如果您的圖像位於數據庫中,則可以將圖像的ID放入網址中,然後創建一個頁面爲您的圖像設置適當的MIME類型,並將這些比特流傳送給調用者。如果你這樣做了,你可能會得到一個看起來像http://servername/image.aspx?id=123的url,對於調用者來說,它的功能與http://servername/image.jpg完全一樣。事實上,如果你這樣做了,那麼你也可以選擇使用額外的查詢字符串參數來指定圖像的輸出大小,甚至圖像的類型(在這種情況下,你的aspx頁面將調整圖像大小或轉換它在格式之間)。