java后台返回了一段hex数据,前端如何转化为图片?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java后台返回了一段hex数据,前端如何转化为图片?相关的知识,希望对你有一定的参考价值。
链接: https://pan.baidu.com/s/1PE65btIqbONdQh1E8lu0WA 提取码: hxr8 数据太长,直接存网盘了,请问在前端如何显示出来? 谢谢!!
两种思路,一种是你把图片下下来。告诉路径给前端。另一种是你直接把图片转换成byte数组,返回给前端。前端是可以有办法的。(我用过这种用来爬虫爬验证码都是这么干的) 参考技术A if (!window.atob) var tableStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var table = tableStr.split("");
window.atob = function (base64) if (/(=[^=]+|=3,)$/.test(base64)) throw new Error("String contains an invalid character");
base64 = base64.replace(/=/g, ""); var n = base64.length & 3; if (n === 1) throw new Error("String contains an invalid character"); for (var i = 0, j = 0, len = base64.length / 4, bin = []; i < len; ++i) var a = tableStr.indexOf(base64[j++] || "A"), b = tableStr.indexOf(base64[j++] || "A"); var c = tableStr.indexOf(base64[j++] || "A"), d = tableStr.indexOf(base64[j++] || "A"); if ((a | b | c | d) < 0) throw new Error("String contains an invalid character");
bin[bin.length] = ((a << 2) | (b >> 4)) & 255;
bin[bin.length] = ((b << 4) | (c >> 2)) & 255;
bin[bin.length] = ((c << 6) | d) & 255;
; return String.fromCharCode.apply(null, bin).substr(0, bin.length + n - 4);
;
window.btoa = function (bin) for (var i = 0, j = 0, len = bin.length / 3, base64 = []; i < len; ++i) var a = bin.charCodeAt(j++), b = bin.charCodeAt(j++), c = bin.charCodeAt(j++); if ((a | b | c) > 255) throw new Error("String contains an invalid character");
base64[base64.length] = table[a >> 2] + table[((a << 4) & 63) | (b >> 4)] +
(isNaN(b) ? "=" : table[((b << 2) & 63) | (c >> 6)]) +
(isNaN(b + c) ? "=" : table[c & 63]);
return base64.join("");
;
function hexToBase64(str) return btoa(String.fromCharCode.apply(null,
str.replace(/\r|\n/g, "").replace(/([\da-fA-F]2) ?/g, "0x$1 ").replace(/ +$/, "").split(" "))
);
function base64ToHex(str) for (var i = 0, bin = atob(str.replace(/[ \r\n]+$/, "")), hex = []; i < bin.length; ++i) var tmp = bin.charCodeAt(i).toString(16); if (tmp.length === 1) tmp = "0" + tmp;
hex[hex.length] = tmp;
return hex.join(" ");
JavaDate数据返回到前端变数字的问题
前端一般传参时间类型到后台 一般用Date接收没有问题,但是后台返回时间类型 前端一般需要转换 这里可以避免该问题
然后这里就要用到一个东西:
@JsonFormat,它的作用是,出参时,自动把Date型对象数据转化成正确的格式化后的字符串出去
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") //@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date eTime;//归档时间,也是归档的版本号
结论是:
1.前端如果传来的是json数据,时间格式是正确的,那么@JsonFormat是可以正确将其转换成Date类型的。
2.前端如果传来的是json数据,时间格式是正确的,那么@DateTimeFormat是可以正确将其转换成Date类型的。
3.但是,用json出参时用注解@DateTimeFormat似乎行不通,就是前面的问题,json返回Date对象时,java的序列化会把date变成一串数字,然后@dataTimeFormat似乎无法解决这个问题。
结论:
1.如果前后端传的数据都是json,那么后台接数据,传数据都可以用@JsonFormat。
[email protected]适合后端 接收 前端传来的数据,不管是不是json都可以正确转换成Date型数据,只要前端传来的格式正确且后端@DateTimeFormat的pattern写正确了,但是这个注解无法将Date型数据用json传到后端去
以上是关于java后台返回了一段hex数据,前端如何转化为图片?的主要内容,如果未能解决你的问题,请参考以下文章