图片上的显示问题比较少,大部分都是直接antd组件,人家处理好了,所以不用担心.
主要是下载文件怎么处理
先说图片的显示问题吧.文件流都是二进制.相信大多数人和我一样笨笨的,旧直接 ajax 或者 axios 请求了.但是发现请求一切正常,但是就是没有文件被下载下来.
文件传输都是二进制,原始的xmlhttprequest 1版本,ajax不支持文件流,jquery也一样.所以默认处理二进制就直接文本乱码显示了,也不会当作附件下载下来.
当然xmlhttprequest 2 标准中支持文件流.并且用xhr.response作为返回,而不是responseText.但是二进制接收到了怎么处理二进制的文件呢?
H5中有一个新特性有一个blob对象处理.当然 axios 也支持responseType:blob属性(axios还是很强的).
所以原生ajax写的话
var url = serverUrlBase + "/server/images/" + mapid + "/files/png";
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = "blob";
xhr.setRequestHeader("client_type", "DESKTOP_WEB");
xhr.setRequestHeader("desktop_web_access_key", _desktop_web_access_key);
xhr.onload = function() {
if (this.status == 200) {
var blob =