ajax中,关于xmlhttp对象,adodb.stream对象的问题

hwbox 2012-03-21 02:29:41
请高手们看清问题,谢谢:

情况背景:
现有A系统中的,有一个图img要提交到B,此图必须登录后,经过一系列人工选择后才能确定是那个图。A系统不透明,不可改,不提供接口。

目前本人解决方案:
做一个页面 a.html 包含一个 iframe,让用户在iframe中登录A系统,点击,选择最终让ifram得到图img的url,此时窗口拥有是已经登录的sessionid。

使用xmlhttp get 这个url 成功后得到图片的二进制数据。

此时问题来了
xmlhttp.responseBody IE 会报错(必须用ie,请不要建议我换浏览器)
xmlhttp.responseStream 没报错,但在后面发送时,表示对象为空或不是对象。

xmlhttp.responseText 报c00ce514错误。

强制

var strValue = new ActiveXObject("ADODB.Stream");
strValue = xmlhttp.responseStream;

没报错,但在后面发送时,表示对象为空或不是对象。

采用如下方法定义
var strValue = xmlhttp.responseStream;

此时再开一个xmlhttp_1 post 到 aaa.axhx

调用方法

xmlhttp_1.send(strValue.read());

表示对象为空或不是对象。

调用方法

xmlhttp_1.sen(strValue);

成功,但上传的内容长度为0

抓包显示

Failed to open POST stream

================================
以上,请问大家有什么解决办法吗?
...全文
208 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoliang1016055 2012-11-16
  • 打赏
  • 举报
回复
楼主能不能分享下解决方法啊。
hwbox 2012-03-28
  • 打赏
  • 举报
回复
自行解决了,答案全部给回复的人。由于您没有在另一个贴里回答,所以只能给你二个贴子的分了。另发博客记录一下。
hwbox 2012-03-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sunjunru 的回复:]
JScript code


/**
* 将符合字节流的string转化成Blob对象
*
* @param {String} data
* @return {Blob}
* @api public
*/
function binaryToBlob(data) {
var bb = new BlobBuilder();
var arr = n……
[/Quote]

首先,非常感谢你的回复,请你在另两个贴子里也回复一下,以便我给分。

其次,你给出的是ff的解决方案,我只能用IE。所以只能说有参考作用。

做为参考的话,BlobBuilder这个对象的要求太高了,要IE10 beta2才可以,所以没有实际应用意义。

hwbox 2012-03-26
  • 打赏
  • 举报
回复
自顶一下,等待中
sunjunru 2012-03-23
  • 打赏
  • 举报
回复


/**
* 将符合字节流的string转化成Blob对象
*
* @param {String} data
* @return {Blob}
* @api public
*/
function binaryToBlob(data) {
var bb = new BlobBuilder();
var arr = new Uint8Array(data.length);
for(var i = 0, l = data.length; i < l; i++) {
arr[i] = data.charCodeAt(i);
}
bb.append(arr.buffer);
return bb.getBlob();
};

/**
* 根据URL获取图片的Blob对象
*
* @param {String} url
* @return {Blob}
* @api public
*/
function getImageBlob(url) {
var r = new XMLHttpRequest();
r.open("GET", url, false);
// 详细请查看: https://developer.mozilla.org/En/XMLHttpRequest/Using_XMLHttpRequest#Receiving_binary_data
// XHR binary charset opt by Marcus Granado 2006 [http://mgran.blogspot.com]
r.overrideMimeType('text/plain; charset=x-user-defined');
r.send(null);
var blob = binaryToBlob(r.responseText);
blob.name = blob.fileName = url.substring(url.lastIndexOf('/') + 1);
blob.fileType = "image/jpeg"; //"image/octet-stream";
return blob;
};

/**
* 将dataUrl转化成Blob对象
*
* @param {String} dataurl
* @return {Blob}
* @api public
*/
function dataUrlToBlob(dataurl) {
// data:image/jpeg;base64,xxxxxx
var datas = dataurl.split(',', 2);
var blob = binaryToBlob(atob(datas[1]));
blob.fileType = datas[0].split(';')[0].split(':')[1];
blob.name = blob.fileName = 'pic.' + blob.fileType.split('/')[1];
return blob;
};

hwbox 2012-03-22
  • 打赏
  • 举报
回复
另:请不要再纠结于跨域,跨域已经用代理html页解决了,现在问的是 js 获取 img 原始数据的问题。
hwbox 2012-03-22
  • 打赏
  • 举报
回复
另一个贴
再一个贴

有效答案,全部给分

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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