当前位置: 首页 > 知识库问答 >
问题:

在Javascript/JQuery中从REST webservice获取图像

任飞龙
2023-03-14

我试图通过从REST Web服务获取二进制数据来动态填充图像标记src。我的链接类似于myhost:port/docId/imageId/file,它返回的内容类型为“application/octetstream”,数据类型为二进制。我的方法是获取这个二进制数据,base64对其进行编码(使用jquery.base64.js),然后将base64编码的数据放入src中。一些代码部分如下所示。

            $.ajax({
          url: " myhost:port/docId/imageId/file ",
          datatype: "binary",
          beforeSend: function (xhr) {
              xhr.overrideMimeType("text/plain; charset=x-user-defined");
          },
          success: function(image){
              var imgBase64 = $.base64.encode(image);
              return  imgBase64  ;
          },
          error: function(xhr, text_status){
              console.log("An error again " + text_status);
          }
    });

我采用的另一种简单的AJAX方法是:

  req.open('GET', " myhost:port/docId/imageId/file" , false);
  req.overrideMimeType('text\/plain; charset=x-user-defined');
  if (req.status != 200){
          console.log("Status code not 200");
          return '';
      }
  return req.responseText;

我重写MIME类型,因为如果我不这样做,虽然GET显示状态200 OK,抓取是抛出一些错误。现在我是Bas64编码req.response文本[var imgBase64=$.base64.encode(req.response文本);]并把它放在我的图像的src。

这就是我在img:var imageSource=“data:image/png;base64”imgBase64$(“#imageId”)。属性('src',图像源)
但是,在这两种情况下编码时,jquery base64都会引发异常“无效字符\u错误:DOM异常5”。即使我在src中放置base64数据时通过抑制此异常对其进行强制编码,它也会在Firebug中显示损坏的数据。我的感觉是,当我重写MIME类型时,二进制数据的编码在某种程度上被篡改了,因此在base64编码过程中,它带来了一些问题。

有人能告诉我哪里出错了吗,或者可能会演示如何从REST api中获取图像(jpeg/png/gif/有时是tif)文件?

共有1个答案

姜献
2023-03-14

也许你不需要对数据进行编码。尝试将确切的bas64字符串倾倒到图像标记中,如

<img src="data:image/png;base64,@@BASE64STRING@@"/>
 类似资料:
  • 问题内容: 我有一个XML文档,其中包含具有格式正确的HTML内容的标签。我需要使用JavaScript将HTML导入页面。但是,由于CMS问题,HTML不能使用<![CDATA []]>或其他任何符号进行转义,并且<>必须存在,而不是编码为&lt;。&gt; 我使用jQuery来获取XML,并将子菜单放入数组中。我可以通过以下方式获取文字: 但是,这仅返回“ Hello World Lorem

  • 我希望当我点击按钮时,我可以得到具体的img src,并在div classblock中显示img src。 HTML CSS JS 但是现在我面临的问题是获取img src。 所以我使用alert进行测试,结果是它什么都没有。

  • 但是宽度和高度较低的图像成功地加载到图像视图中! 有人能告诉我代码有什么问题吗?我做错了什么?我只想从库中导入相机图像,并在图像视图中显示它们!

  • 问题内容: 我如何解析边框宽度 在jQuery / javascript中? 不这样做。 注意我需要从css解析宽度,因为元素可能是 谢谢 编辑 我实际上并没有使用内联样式,我只是为了简单起见以这种方式编写了该代码,因为我没有意识到任何令人讨厌的差异。虽然对于内联样式它似乎工作正常,但是仍然无法从已应用的CSS类中获取任何值。 问题答案: 您可以使用 解析从 到的边框宽度 : 我周围有一个Goog

  • 问题内容: Q1) 在我的reactjs应用程序中,我正在尝试从后端Nodejs服务器获取API。API会根据请求响应图像文件。 我可以在http://192.168.22.124:3000/source/592018124023PM-pexels- photo.jpg 上访问并查看图像文件 但是在我的reactjs客户端上,我在控制台日志上收到此错误。 未捕获(承诺)SyntaxError:意外

  • 我想使用共享命令从图库获取图像。 我目前的代码是: imageUri 的值为:content://media/external/images/media/37 但是函数“openInputStream”会抛出错误“java.io.FileNotFoundException”。 通过下面的函数,我得到了图像的真实路径。 但我不知道如何将其转换为位图。