我将一个图像字节数组从我的主页传递给处理程序。我不能使用session。是否可以在我尝试的查询字符串中传递字节数组
imgPreview.ImageUrl=ImageHandler.ashx?imagebytes=" + System.Text.Encoding.UTF8.GetString(fileUploader.FileBytes);
但它不起作用。
答案 0 :(得分:1)
它不起作用,因为在使用UTF-8编码二进制数据的许多问题中。你真的想要使用base64编码,然后你可能还需要对其进行URL编码。
两者都会考虑到你的网址长度并且可能达到限制。
您需要使用某种类型的后端ID标记该图像,并将其传递到URL中。
如果您不能使用会话存储(无论如何不应该用于图像)或数据库,您可以将图像存储在文件系统上。
答案 1 :(得分:0)
不,你不能这样做。查询字符串长度有限制。这些限制因浏览器而异。
答案 2 :(得分:0)
答案 3 :(得分:0)
尝试将图像存储到文件系统中的位置,通过get传递位置并从第二个脚本中检索图像,查询字符串请求具有长度限制,图像是很多字节。
答案 4 :(得分:0)
冒着创造“我也是”的答案的风险; Base64编码是执行此操作的唯一合理方法,但几乎可以肯定(确切地说)并非您真正想要执行此操作的方式。也许如果你提供了更多的上下文,那么帮助解决方案会更容易。我想如果我们谈论的只是像图标这样的微小图像可能会起作用,但它仍然不是你想要的解决方案。查询字符串不是要直接传递对象。它旨在提出资源请求。您可以将图像保存到磁盘上的文件中,并直接在URL中引用文件,正如其他人所建议的那样。如果您的图像位于数据库中,您可以将图像的id放在URL中,并创建一个页面,为您的图像设置适当的MIME类型,并将这些位流出来给调用者。如果你这样做了,你可能会得到一个看起来像http://servername/image.aspx?id=123
的网址,这对于来电者而言,与http://servername/image.jpg
在功能上完全相同。事实上,如果你这样做,那么你也可以选择使用额外的查询字符串参数来指定图像的输出大小,甚至是图像的类型(在这种情况下,你的aspx页面会调整图像大小或转换它在格式之间)。