C# 如何在查询字符串中传递长字节数组?

C# 如何在查询字符串中传递长字节数组?,c#,asp.net,.net,webpage,C#,Asp.net,.net,Webpage,我正在将一个图像字节数组从主页面传递给处理程序。我不能使用会话。是否可以在我尝试过的查询字符串中传递字节数组 imgPreview.ImageUrl=ImageHandler.ashx?imagebytes=" + System.Text.Encoding.UTF8.GetString(fileUploader.FileBytes); 但是它不起作用。它不起作用,因为在许多问题中,您使用UTF-8对二进制数据进行编码。您可能希望真正使用base64编码,然后您可能还需要对其进行URL编码 两者

我正在将一个图像字节数组从主页面传递给处理程序。我不能使用会话。是否可以在我尝试过的查询字符串中传递字节数组

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

但是它不起作用。

它不起作用,因为在许多问题中,您使用UTF-8对二进制数据进行编码。您可能希望真正使用base64编码,然后您可能还需要对其进行URL编码

两者都会大大增加你的url长度,而且可能会达到极限

您需要使用某种后端ID标记图像,并将其传递到URL中


如果不能使用会话存储(无论如何,图像不应该使用会话存储)或数据库,则可以将图像存储在文件系统上。

不,您不能这样做。查询字符串长度有限制。这些限制因浏览器而异。

这不是在querystring上传输长表达式的正确方法

你应该做一个httprequest


您应该操作长度

尝试将图像存储到文件系统中的某个位置,通过get传递该位置并从第二个脚本检索图像,查询字符串请求有长度限制,并且图像有很多字节。

冒着创建“我也是”答案的风险;编码将是实现这一点的唯一合理方法,但几乎可以肯定(如绝对)这不是您真正想要的方式。如果您提供多一点上下文,可能会更容易帮助您找到解决方案。我想如果我们谈论的只是像图标这样的小图像,它可能会工作,但它仍然不是你想要的解决方案。查询字符串不是用来直接传递对象的。它意味着对资源发出请求。正如其他人所建议的,您可以将图像保存到磁盘上的文件中,并直接在URL中引用这些文件。如果您的图像位于数据库中,您可以将图像的id放入url中,并创建一个页面,为图像设置适当的MIME类型,然后将位流式输出给调用者。如果您这样做了,您可能会得到一个类似
http://servername/image.aspx?id=123
对于调用者来说,它在功能上与
http://servername/image.jpg
。事实上,如果您这样做了,那么您还可以选择使用其他查询字符串参数来指定图像的输出大小,甚至图像的类型(在这种情况下,您的aspx页面将调整图像大小或在不同格式之间转换图像).

由于查询字符串长度限制,这似乎不太可能:您根本不需要这样做。您不能通过URL传递图像数据。传递一个指向给定图像的唯一标识符,并让ImageHandler加载该图像。显然它不起作用。你是怎么想到做这样的事情的呢?这是一种将图像从页面发送到其他任何内容的糟糕方式,也不要使用会话。这也是不好的,你能解释一下为什么要这样做,以便有人能给你一种更好的方法,这样你就需要urlsafe base64编码。