UNPKG

@yhiot/utils

Version:
79 lines (71 loc) 2.18 kB
import 'isomorphic-fetch'; import console from 'console'; export const fetchImage = url => { if (!url) { console.log('error! url=null!'); } console.log('request', url); return fetch(url, { method: 'GET' }) .catch(error => { console.error('error!', error, url); throw new Error('网络请求失败!'); }) .then(response => { if (!response.ok) { throw new Error(response.statusText); } if (response.status === 204) { throw new Error('没有数据!'); } return response; }); }; export const fetchImageBuffer = url => { return fetchImage(url).then(response => { let contentType = response.headers.get('content-type'); // let buffer = response.arrayBuffer(); return response.buffer().then(buffer => ({ contentType, buffer })); }); }; export const fetchImageBase64 = url => { return fetchImageBuffer(url).then(({ contentType, buffer }) => { if (buffer) { if ( ['image/jpg', 'image/bmp', 'image/png', 'image/jpeg'].indexOf( contentType, ) >= 0 ) { let base64Flag = 'data:' + contentType + ';base64,'; // let imageStr = arrayBufferToBase64(buffer); let imageStr = buffer.toString('base64'); return base64Flag + imageStr; } } return null; }); }; export const fetchImageBase64UrlEncode = url => { return fetchImageBuffer(url).then(({ contentType, buffer }) => { if (buffer) { if ( ['image/jpg', 'image/bmp', 'image/png', 'image/jpeg'].indexOf( contentType, ) >= 0 ) { // let base64Flag = 'data:' + contentType + ';base64,'; // let imageStr = arrayBufferToBase64(buffer); let imageStr = buffer.toString('base64'); return encodeURIComponent(imageStr); // return base64Flag + encodeURIComponent(imageStr); } } return null; }); }; // function arrayBufferToBase64(buffer) { // let binary = ''; // let bytes = [].slice.call(new Uint8Array(buffer)); // bytes.forEach(b => (binary += String.fromCharCode(b))); // return window.btoa(binary); // // return binary.toString('base64'); // }