Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.05.2021, 22:26
Новичок на форуме
Отправить личное сообщение для Softy Посмотреть профиль Найти все сообщения от Softy
 
Регистрация: 10.05.2021
Сообщений: 5

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)
})

Последний раз редактировалось Softy, 15.05.2021 в 22:29.
Ответить с цитированием
  #2 (permalink)  
Старый 15.05.2021, 22:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от Softy
куда копать подскажите
копать на сервер
Цитата:
Важное замечание: FileReader используется только для безопасным образом чтения содержимого файла из пользовательской (удалённой) системы. Его нельзя использовать для простого чтения файла по пути из файловой системы
Ответить с цитированием
  #3 (permalink)  
Старый 15.05.2021, 22:54
Новичок на форуме
Отправить личное сообщение для Softy Посмотреть профиль Найти все сообщения от Softy
 
Регистрация: 10.05.2021
Сообщений: 5

Оно всё хорошо. но почему не работает с тестовой картинкой как в примере. должно же
Ответить с цитированием
  #4 (permalink)  
Старый 15.05.2021, 23:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от Softy
почему не работает с тестовой картинкой как в примере.
вроде всё работает
<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>
Ответить с цитированием
  #5 (permalink)  
Старый 17.05.2021, 15:18
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Softy,
это должно в Node.js работать? Тогда можно штатными средствами - загрузить Buffer и вызвать у него toString('base64')
Ответить с цитированием
  #6 (permalink)  
Старый 18.05.2021, 22:58
Новичок на форуме
Отправить личное сообщение для Softy Посмотреть профиль Найти все сообщения от Softy
 
Регистрация: 10.05.2021
Сообщений: 5

Сообщение от Alexandroppolus
Buffer
Спасибо получил и куда проще)
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 присвоить значение переменной доступной из других функций (глобальная переменная)

Последний раз редактировалось Softy, 18.05.2021 в 23:10.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
конвертация image в base64 seltrix Javascript под браузер 4 31.01.2019 08:41
Смена картинки при нажатии на маленькие картинки comb Элементы интерфейса 4 23.03.2015 01:08
Идентифицировать картинки MellDixX Общие вопросы Javascript 8 04.08.2013 18:16
JS и картинки в base64 zig Общие вопросы Javascript 0 17.04.2011 08:41
Как изменить размер картинки? Mihail Общие вопросы Javascript 1 25.10.2009 13:42