Создать архив на странице

155
13 апреля 2019, 12:10

У меня есть набор data-uri и ссылок, по которым я могу послать ajax-запросы, а также немного дополнительной текстовой информации. При этом скрипт исполняется на странице. Хотелось бы из всего этого создать единый архив (с кучей файлов) и предоставить пользователю возможность скачать его через ObjectURL.

Насколько я представляю, самым простым форматом архива является tar. Как реализовать архивацию в tar на клиенте?

var c1 = "Just some text file" 
var b1 = new Blob([c1], {type : 'text/plain'}) 
var f1 = new File([b1], "file-1.txt") 
 
var c2 = new Uint8Array([0x89,0x50,0x4E,0x47,0x0D,0x0A,0x1A,0x0A,0x00,0x00,0x00,0x0D,0x49,0x48,0x44,0x52,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x01,0x03,0x00,0x00,0x00,0xFE,0xC1,0x2C,0xC8,0x00,0x00,0x00,0x06,0x50,0x4C,0x54,0x45,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x55,0xC2,0xD3,0x7E,0x00,0x00,0x00,0x16,0x49,0x44,0x41,0x54,0x78,0x5E,0x63,0xF8,0xCF,0xD0,0xC8,0xB0,0x97,0x61,0x29,0x10,0xEE,0x05,0xB2,0xFE,0x03,0x00,0x2E,0x30,0x05,0xC5,0x31,0x03,0x9F,0xF7,0x00,0x00,0x00,0x00,0x49,0x45,0x4E,0x44,0xAE,0x42,0x60,0x82]) 
var b2 = new Blob([c2], {type: 'image/png'}) 
var f2 = new File([b2], "file-1.png") 
 
var a1 = document.getElementById("a1") 
a1.href = URL.createObjectURL(f1) 
a1.download = f1.name 
 
var a2 = document.getElementById("a2") 
a2.href = URL.createObjectURL(f2) 
a2.download = f2.name 
 
var aa = document.getElementById("aa") 
aa.href = "data:text/plain,???"; // Архив из двух файлов 
aa.download = "all-files.tar"
<a id="a1" download>Download text</a><br> 
<a id="a2" download>Download image</a><br> 
<a id="aa" download>Download both</a><br>

READ ALSO
Как получить и вывести имена всех таблиц?

Как получить и вывести имена всех таблиц?

До сих пор не приходилось что-то делать с таблицами БД, не зная их имёнИ теперь возникла необходимость занести в массив имена большого числа...

179
Реализация LAG и FIRST_VALUE в MySql

Реализация LAG и FIRST_VALUE в MySql

Как реализовать LAG и FIRST_VALUE в MySql в старой версии?

150