Сохранение изображений в localStorage с использованием fetch () и blob () - PullRequest
0 голосов
/ 21 декабря 2018

К сожалению, нет никаких рабочих примеров кода, упомянутого в заголовке.
Все найденное вокруг было либо старомодным, как canvas, либо слишком длинным.

fetch('https://www.stevensegallery.com/320/240')
  .then(pic => pic.blob())
  .then(pic => localStorage['pic'] = pic);

Есть ли какой-нибудькраткий однострочный, чтобы сделать это без написания отдельной функции?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Наконец сделал это не слишком тяжелым.Также пришлось JSON.parse это до ввода в фактический источник.

fetch('https://source.unsplash.com/300x170/?girl')
  .then(pic => pic.blob())
  .then(pic => {
    const fr = new FileReader();
    fr.onload = () => { 
      const dataURL = fr.result;
      document.getElementById('pic').src = dataURL;
      localStorage['pic'] = JSON.stringify(dataURL);
    }
  fr.readAsDataURL(pic);
});
<img id='pic' />
0 голосов
/ 21 декабря 2018

Вы можете реализовать function, который сделает это за вас:

function storeImage(key, url) {
  fetch(url)
    .then(pic => pic.blob())
    .then(pic => {
      const fr = new FileReader();
      fr.readAsDataURL(pic);
    })
    .then(pic => localStorage[key] = pic);
}

, а затем назвать его так:

storeImage('pic', 'https://www.stevensegallery.com/320/240');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...