繁体   English   中英

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

[英]How to pass a long byte array in query string?

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

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

但是它不起作用。

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

两者都会极大地增加您的网址长度,并且可能会达到极限。

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

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

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

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

您应该进行httprequest。 https://stackoverflow.com/a/5527349/413032

你应该控制长度

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

有创建“我也是”答案的风险; Base64编码是执行此操作的唯一合理方法,但是几乎可以肯定(绝对如此)不是您真正想要执行此操作的方法。 也许如果您提供了更多的上下文信息,则更容易提供解决方案。 我想如果我们只是在谈论像图标这样的微小图像,它可能会起作用,但它仍然不是您想要的解决方案。 查询字符串并不意味着直接传递对象。 它旨在请求资源。 您可以将图像保存到磁盘上的文件中,然后按照其他人的建议直接在URL中引用这些文件。 如果图像在数据库中,则可以将图像的ID放在url中,并创建一个页面,该页面为图像设置适当的MIME类型,并将这些比特流输出到调用者。 如果这样做了,您可能会得到一个看起来像http://servername/image.aspx?id=123的url,对于调用者而言,它在功能上与http://servername/image.jpg完全相同http://servername/image.jpg 实际上,如果您这样做了,那么您还可以选择使用其他查询字符串参数来指定诸如图像的输出大小甚至图像的类型之类的内容(在这种情况下,aspx页面将调整图像的大小或进行转换)格式之间)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM