分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

ajax接收二进制文件并转化成int,string等

发布时间:2023-09-06 01:41责任编辑:沈小雨关键词:暂无标签

1.  ajax请求服务器二进制文件的方法。

//二进制Ajax请求 ???????????var xmlhttpbinary; ???????????//获得请求url的参数 ???????????function GetRequest() { ???????????????????//向服务器发送异步请求 ???????????????????xmlhttpbinary = null; ???????????????????if (window.XMLHttpRequest) {// code for IE7, Firefox, Opera, etc. ???????????????????????xmlhttpbinary = new XMLHttpRequest(); ???????????????????} ???????????????????else if (window.ActiveXObject) {// code for IE6, IE5 ???????????????????????xmlhttpbinary = new ActiveXObject("Microsoft.XMLHTTP"); ???????????????????} ???????????????????if (xmlhttpbinary != null) { ???????????????????????xmlhttpbinary.responseType = "blob"; //这里要用blob ???????????????????????xmlhttpbinary.onreadystatechange = blobxpr_state_Change; ???????????????????????xmlhttpbinary.open("GET", "test3.txt", true); ???????????????????????xmlhttpbinary.send(null); ???????????????????} ???????????????????else { ???????????????????????alert("Your browser does not support XMLHTTP."); ???????????????????} ???????????}

注释:xmlhttpbinary的请求类型应该是blob

2. 接收返回的数据

function blobxpr_state_Change() { ???????????if (xmlhttpbinary.readyState == 4) {// 4 = "loaded" ???????????????if (xmlhttpbinary.status == 200) {// 200 = "OK" ???????????????????var bigblob = xmlhttpbinary.response; ???????????????????var reader = new FileReader(); ???????????????????var smallblob; ???????????????????smallblob = bigblob.slice(0, 22); ???????????????????????????????????????reader.readAsArrayBuffer(smallblob); ???????????????????reader.onloadend = function (evt) { ????//filereader加载blob成功处理函数 ???????????????????????var buffer = evt.target.result; ???????????????????????//读取int ???????????????????????????????????????????????var dv = new DataView(buffer); ???????????????????????var a5 = dv.getInt32(0); ???????????????????????//读取string ???????????????????????var enc = new TextDecoder(); ???????????????????????var abc = enc.decode(buffer); ???????????????????????alert("获得字符串 " + abc); ???????????????????????document.getElementById("demo").innerHTML = abc; ???????????????????} ???????????????} ???????????????else { ???????????????????alert("Problem retrieving XML data:" + xmlhttpbinary.statusText); ???????????????} ???????????} ???????}

注释,转int时用DataView.getInt32()函数,注意用C#转int至byte[]的顺序与getInt32()函数的顺序相反。87,100,0,0   0,0,100,87,需要注意下。C#写二进制文件时,结尾会有3个byte的莫名字符,decode()的时候需要将这3个字符去掉。

ajax接收二进制文件并转化成int,string等

原文地址:https://www.cnblogs.com/bwzydr/p/8432215.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved