0

我有存储图像的 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) ;
}
4

1 回答 1

1

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

HTTP 协议对 URI 的长度没有任何先验限制。服务器必须能够处理它们所服务的任何资源的 URI,并且如果它们提供可以生成此类 URI 的基于 GET 的表单,则应该能够处理无限长度的 URI。如果 URI 比服务器可以处理的长(参见第 10.4.15 节),服务器应该返回 414(Request-URI Too Long)状态。

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

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

于 2012-05-29T14:07:09.817 回答