【问题标题】:ASP.NET -> Has anyone dealt with image Urls that are over 2500 characters?ASP.NET -> 有没有人处理过超过 2500 个字符的图像 URL?
【发布时间】:2012-05-29 13:54:29
【问题描述】:

我有存储图像的 ASPX 页面。这些图片的 URL 大约有 2000 个字符。

此 URL 的值是从某处读取的,我无法控制。

我想知道是否有人处理过这种情况。

我有一个重建此 URL 的 javascript 程序。

所以我想知道,

a) 如何处理长度较长的 URL。 (我在 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) ;
}

【问题讨论】:

  • 不支持超过 2000 个字符的 URL,请参阅 stackoverflow.com/questions/417142/…
  • @JeremyHolovacs:由于 URL 长度是个问题,我想使用 javascript 函数。到目前为止,我一直无法使用 javascript 函数获得成功。我将把那个 javascript 粘贴到我原来的帖子中。
  • @SalmanA:此时我正在尝试重建 URL。遇到一些问题。
  • 它(真的)是一个url还是图像数据(base64)本身?
  • @EdSF:URL 比较长,但我有一个 javascript 例程要重建。一旦我得到重构的 URL,我想在图像上使用 http post,以便在提交或显示页面时显示。

标签: javascript asp.net image http-post imageurl


【解决方案1】:

问题不在于协议可以处理的长度,而在于您的客户端可以处理的长度。大多数浏览器的最大获取大小约为 2000 个字符。如果您想要更多,则需要其他浏览器。但是,这通常不受您的控制。

HTTP 协议没有对 a 的长度设置任何先验限制 URI。服务器必须能够处理它们所使用的任何资源的 URI 服务,并且应该能够处理无限长度的 URI,如果它们 提供可以生成此类 URI 的基于 GET 的表单。服务器应该 如果 URI 长于 服务器可以处理(参见第 10.4.15 节)。

注意:服务器应谨慎对待取决于 URI 长度 超过 255 个字节,因为一些较旧的客户端或代理实现 可能无法正确支持这些长度。

您可以尝试使用帖子将信息发送到服务器并将图像返回给您的客户端。

【讨论】:

  • 感谢您的意见。我想使用 POST 并且需要更多输入。考虑到我上面提到的情况,你能提供同样的吗?
  • 我想知道如何使用 httpwebrequest 在同一个帖子中发布图片??
  • 谁能推荐我?不知道问题是不是很基础?还是复杂的?
猜你喜欢
  • 1970-01-01
  • 2010-10-13
  • 2016-11-14
  • 1970-01-01
  • 2015-03-14
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
  • 2010-10-28
相关资源
最近更新 更多