@yhiot/utils
Version:
102 lines (78 loc) • 2.88 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.fetchImageBase64UrlEncode = exports.fetchImageBase64 = exports.fetchImageBuffer = exports.fetchImage = void 0;
require("isomorphic-fetch");
var _console = _interopRequireDefault(require("console"));
var fetchImage = function fetchImage(url) {
if (!url) {
_console.default.log('error! url=null!');
}
_console.default.log('request', url);
return fetch(url, {
method: 'GET'
}).catch(function (error) {
_console.default.error('error!', error, url);
throw new Error('网络请求失败!');
}).then(function (response) {
if (!response.ok) {
throw new Error(response.statusText);
}
if (response.status === 204) {
throw new Error('没有数据!');
}
return response;
});
};
exports.fetchImage = fetchImage;
var fetchImageBuffer = function fetchImageBuffer(url) {
return fetchImage(url).then(function (response) {
var contentType = response.headers.get('content-type'); // let buffer = response.arrayBuffer();
return response.buffer().then(function (buffer) {
return {
contentType: contentType,
buffer: buffer
};
});
});
};
exports.fetchImageBuffer = fetchImageBuffer;
var fetchImageBase64 = function fetchImageBase64(url) {
return fetchImageBuffer(url).then(function (_ref) {
var contentType = _ref.contentType,
buffer = _ref.buffer;
if (buffer) {
if (['image/jpg', 'image/bmp', 'image/png', 'image/jpeg'].indexOf(contentType) >= 0) {
var base64Flag = 'data:' + contentType + ';base64,'; // let imageStr = arrayBufferToBase64(buffer);
var imageStr = buffer.toString('base64');
return base64Flag + imageStr;
}
}
return null;
});
};
exports.fetchImageBase64 = fetchImageBase64;
var fetchImageBase64UrlEncode = function fetchImageBase64UrlEncode(url) {
return fetchImageBuffer(url).then(function (_ref2) {
var contentType = _ref2.contentType,
buffer = _ref2.buffer;
if (buffer) {
if (['image/jpg', 'image/bmp', 'image/png', 'image/jpeg'].indexOf(contentType) >= 0) {
// let base64Flag = 'data:' + contentType + ';base64,';
// let imageStr = arrayBufferToBase64(buffer);
var 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');
// }
exports.fetchImageBase64UrlEncode = fetchImageBase64UrlEncode;