【问题标题】:JQuery Img Attr request get headers sent by the serverJQuery Img Attr 请求获取服务器发送的标头
【发布时间】:2011-08-09 15:15:07
【问题描述】:

我想要做的是使用 jQuery 来请求图像(在这种情况下是图形)。 在 jQuery 中,我在我的图像上设置了 src 属性,该属性按预期从服务器拉下图形。

$("#graphImage").attr("src", graphUrl);

我希望能够通过这个请求发送一些 Header 信息并让 jQuery 读取它。

我该怎么做。我的一个朋友建议使用 ajax 将图像下载到 blob,然后将 blob 写入图像标签……不知道如何做到这一点。

【问题讨论】:

    标签: jquery http-headers response


    【解决方案1】:

    在非 IE 浏览器上试试这个

    $.ajax({
      url: graphUrl,//This will be a page which will return the base64 encoded string
      headers: {},//Pass the required header information
      success: function(response){
         $("#graphImage").attr("src", response);
      }
    });
    

    图片转base64字符串

    public string ImageToBase64(Image image, 
      System.Drawing.Imaging.ImageFormat format)
    {
      using (MemoryStream ms = new MemoryStream())
      {
        // Convert Image to byte[]
        image.Save(ms, format);
        byte[] imageBytes = ms.ToArray();
    
        // Convert byte[] to Base64 String
        string base64String = Convert.ToBase64String(imageBytes);
        return base64String;
      }
    }
    

    【讨论】:

    • 这不起作用。 response 必须是 url,而不是二进制数据。我想接收标题,而不是发送它们。
    • 它适用于除IE < 7 之外的所有浏览器。我在我的项目中使用它。
    • 所以我在服务器上做了一些不同的事情,将响应编码为base64?
    • 哇,这太棒了。我什至不必再使用标题了。我可以根据需要将字符串与其他信息一起传递到 json 文档中。甜!
    【解决方案2】:

    我不知道如何读取响应以加载图像,但拉动响应标头是直截了当的。

    jQuery.ajax({
      url: '/img/foo.gif',
      complete: function (jqXHR, textStatus) {
        var h = jqXHR.getResponseHeader('Content-Type');
        alert(h);
      }
    });
    

    【讨论】:

    • 谢谢。我也不知道该怎么做。
    猜你喜欢
    • 2014-09-26
    • 1970-01-01
    • 2022-01-20
    • 2015-03-17
    • 1970-01-01
    • 2011-10-07
    • 2023-03-18
    • 2015-12-07
    相关资源
    最近更新 更多