我有ASPX页面,我存储图像。这些图像的URL大约有2000个字符。
此URL的值是从某处读取的,我无法控制。
我想知道是否有人处理过这类情况。
我有一个重建此网址的javascript程序。
所以我想知道,
a)如何处理长度较长的网址。 (我在OnInit中获取了URL)。由于它们更长,我想使用javascript函数来修剪URL长度。
b)一旦我获得了重建的URL(大约500个字符),我想将其分配回图像并允许页面加载完成。实现
提前致谢,
更新0:我想知道httpwebrequest如何用于在同一篇文章中发布图片?
更新1:我已更新原始帖子。
更新2 Javascript代码。此代码重建并提交文档。我很好用这个javascript,或者我可以只修改URL,然后将它分配给我的代码隐藏(OnInit)中的图像。
<script type="text/javascript">
function posturl(url) {
var qsBegin = url.indexOf("?");
var qsPattern = new RegExp("[?&]([^=]*)=([^&]*)", "ig");
var match = qsPattern.exec(url);
var params = new Array();
while (match != null) {
var matchID = match[1];
if ( matchID.charAt(0) == "&" ) {
matchID = matchID.substr(1);
}
if ( params[match[1]] != null && !(params[match[1]] instanceof Array) ) {
var subArray = new Array();
subArray.push(params[match[1]]);
subArray.push(unescape(match[2]));
params[match[1]] = subArray;
} else if ( params[match[1]] != null && params[match[1]] instanceof Array ) {
params[match[1]].push(unescape(match[2]));
} else {
params[match[1]]=unescape(match[2]);
}
match = qsPattern.exec(url);
}
var myForm = document.createElement("form");
myForm.setAttribute("target", "_blank");
myForm.method="post" ;
myForm.action = url.substring(0,qsBegin) ;
for (var k in params) {
var myInput;
// Check for params with the same name.
if ( params[k] instanceof Array ) {
for ( var i=0; i<params[k].length; i++ ) {
myInput = createFormInput(k, params[k][i]);
myForm.appendChild(myInput) ;
}
} else {
myInput = createFormInput(k, params[k]);
myForm.appendChild(myInput);
}
}
document.body.appendChild(myForm) ;
myForm.submit() ;
document.body.removeChild(myForm) ;
}
答案 0 :(得分:1)
问题不在于protocal可以处理的长度,而在于客户端可以处理的长度。大多数浏览器的最大获取大小约为2000个字符。如果您需要更多,则需要其他浏览器。然而,这通常不在您的控制之下。
HTTP协议不对a的长度设置任何先验限制 URI。服务器必须能够处理它们的任何资源的URI 服务,并且应该能够处理无限长度的URI 提供可以生成此类URI的基于GET的表单。服务器应该 如果URI长于,则返回414(Request-URI Too Long)状态 服务器可以处理(参见第10.4.15节)。
注意:服务器应该谨慎依赖URI长度 超过255个字节,因为一些较旧的客户端或代理实现 可能无法正确支持这些长度。
您可以尝试使用帖子将信息发送到服务器并将图像返回给您的客户端。