filereader конвертация картинки в Base64
Нашел в интернете функцию
function toDataURL(url, callback) { var xhr = new XMLHttpRequest(); xhr.onload = function() { var reader = new FileReader(); reader.onloadend = function() { callback(reader.result); } reader.readAsDataURL(xhr.response); }; xhr.open('GET', url); xhr.responseType = 'blob'; xhr.send(); } toDataURL('https://www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0', function(dataUrl) { console.log('RESULT:', dataUrl) }) установил filereader запускаю в том виде в котором дано (в начале пробовал подсунуть свою ссылку. но не работает ни так ни так. получаю D:\Street\Test\node_modules\filereader\FileReader.js:266 throw new Error("cannot read as File: " + JSON.stringify(file)); ^ Error: cannot read as File: undefined at readFile (D:\Street\Test\node_modules\filereader\FileReader.js:266:15) at FileReader.self.readAsDataURL (D:\Street\Test\node_modules\filereader\FileReader.js:292:7) at exports.XMLHttpRequest.xhr.onload (D:\Street\Test\build\src\store\lookup.js:333:16) at exports.XMLHttpRequest.dispatchEvent (D:\Street\Test\node_modules\xmlhttprequest\lib\XMLHttpRequest.js:591:25) at setState (D:\Street\Test\node_modules\xmlhttprequest\lib\XMLHttpRequest.js:614:14) at IncomingMessage.<anonymous> (D:\Street\Test\node_modules\xmlhttprequest\lib\XMLHttpRequest.js:447:13) at IncomingMessage.emit (node:events:381:22) at endReadableNT (node:internal/streams/readable:1307:12) at processTicksAndRejections (node:internal/process/task_queues:81:21) куда копать подскажите Чтобы запустилось пришлось добавить function toDataURL(url:string, callback:any) { var xhr = new XMLHttpRequest(); xhr.onload = function() { var reader = new FileReader(); reader.onloadend = function() { callback(reader.result); } reader.readAsDataURL(xhr.response); }; xhr.open('GET', url); xhr.responseType = 'blob'; xhr.send(); } toDataURL('https://www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0', function(dataUrl:any) { logger.info('RESULT:', dataUrl) }) |
Цитата:
Цитата:
|
Оно всё хорошо. но почему не работает с тестовой картинкой как в примере. должно же
|
Цитата:
<script> function toDataURL(url, callback) { var xhr = new XMLHttpRequest(); xhr.onload = function() { var reader = new FileReader(); reader.onloadend = function() { callback(reader.result); } reader.readAsDataURL(xhr.response); }; xhr.open('GET', url); xhr.responseType = 'blob'; xhr.send(); } toDataURL('https://www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0', function(dataUrl) { document.write(['RESULT: ', dataUrl]) }) </script> |
Softy,
это должно в Node.js работать? Тогда можно штатными средствами - загрузить Buffer и вызвать у него toString('base64') |
Цитата:
var request = require('request').defaults({ encoding: null }); var url = 'https://www.gravatar.com/avatar/d50c83cc0c6523b4d3f6085295c953e0'; function base64decode(urlnew, callback){ request(urlnew, function (err, resp, buffer) { callback(buffer.toString('base64')); }); }; function cons1() { console.log('Функция 1'); }; function cons2() { console.log('Функция 2'); }; base64decode(url, script => { console.log(script); }) cons1(); cons2(); console.log('Просто консоль'); как можно остановить выполнение пока не вернется ответ с этой функции. а то у меня получается ответы Функция 1 Функция 2 Просто консоль iVBORw0KGgo..... (код картинки) хотя функция получения base64 и стоит выше и запускается раньше. Хотелось бы приостановить всё пока не вернется значение с первой функции и еще вопрос. можно как то внутри функции base64decode присвоить значение переменной доступной из других функций (глобальная переменная) |
Часовой пояс GMT +3, время: 14:40. |