截取二进制流的方法

imzhiguang 2014-12-16 07:23:26
我有以下一个函数,程序可以走到req.request的成功回调那里,我把需求写在那里了。


function getCgiPicture(url) {
var outPut = document.getElementById("output");

var req = new digestAuthRequest('GET', url, 'admin', 'admin');

req.request(function(data) {
// success callback

//下面两行是我要做的功课,data是一个流,流里边包括jpg图片的流
//了解了一下jpg的编码格式,是以0xFFD8开始,以0xFFD9结束
//所以我需要把data这个流,做一个截取,取里边0xFFD8~0xFFD9之间的内容,最后再做BASE64
var img = ;
outPut.innerHTML = "<img src='data:image/jpg;base64," + Base64.encode(img) + "' />";
},function(errorCode) {
// error callback
});


请问,怎么样截取data中间流,它是二进制的,不是字符串。
...全文
216 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
弘毅致远 2014-12-17
  • 打赏
  • 举报
回复
var img = data.match(/0xFFD8(.*)0xFFD9/)[1];
弘毅致远 2014-12-17
  • 打赏
  • 举报
回复

function getCgiPicture(url) {
        var outPut = document.getElementById("output");
 
        var req = new digestAuthRequest('GET', url, 'admin', 'admin');
 
        req.request(function(data) {
            // success callback
 
            //下面两行是我要做的功课,data是一个流,流里边包括jpg图片的流
            //了解了一下jpg的编码格式,是以0xFFD8开始,以0xFFD9结束
            //所以我需要把data这个流,做一个截取,取里边0xFFD8~0xFFD9之间的内容,最后再做BASE64
            var img =  match(/0xFFD8(.*)0xFFD9/)[1];
            outPut.innerHTML = "<img src='data:image/jpg;base64," + Base64.encode(img) + "' />";
        },function(errorCode) {
            // error callback
        });
  • 打赏
  • 举报
回复
据我所知,如果你这个 req.request 请求是一个http请求的话,那根本不可能返回二进制,因为http是文本协议,返回的内容一定是字符的集合。
蝶恋花雨 2014-12-16
  • 打赏
  • 举报
回复
一种是用substr 来截取中间部分 var asd123 = '0xFFD8csdn0xFFD9'; var ss = asd123.substr(6, asd123.lastIndexOf("0xFFD9")-6); //0xFFD8是6位 0xFFD9是6位, 二种是利用正则表达式来取 大体/0xFFD8[^<>]*?0xFFD9/gi;这样。我写的不对。

87,919

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧