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:57. |