base64-url-downloader. Хостим файлы в урл адресе

Скрипт позволяет скачивать как файл, текст записанный в URL после решетки #. Фишка в том, что перед передачей на скачивание этот текст перекодируется из формата base64. Это позволяет запихнуть прямо в URL небольшой файл - файлообменники больше не нужны!

Как это работает

Скрипт в дикой природе: github

Листинг кода:

document.write('
<a 
  id="a" 
  download="'+decodeURIComponent(window.location.search.substring(1,100))+'"
  href="data:n/a;base64,'+decodeURIComponent(window.location.hash.substring(1))+'"
>download</a>
');
a.click();
history.back();

При запуске скрипта сразу без прелюдий в тело страницы с помощью функции document.write вписывается ссылка. У этой ссылки есть три параметра: id, download, href. Параметры заполняются динамически - данные для них скрипт берет из URL страницы.

Параметр download отвечает за название, с которым скачается файл по ссылке, сюда прописывается все что записано в урле после вопросительного знака.

Параметр href - это путь куда ведет ссылка. В данном случае использован протокол “data:” - это легкий способ указать браузеру что все содержимое ссылки уже загружено в браузер и его просто надо отобразить. Сюда динамически подставляется все, что в URL-адресе после решетки.

В сочетании с имеющимся параметром download, при клике по ссылке, будет инициировано скачивание содержимого ссылки.

После того как ссылка прописана в тело документа, браузер автоматически кликнет по ней: a.click();

А как закодировать?

Windows

Кодировщик. Сохранить в файл с именем enc64.bat. Кодируемый файл перетащить на скрипт

@echo off
chcp 1251 > nul
if "%~1"=="" (
echo usage: enc64 filename.pdf && pause && exit
)
certutil -encodehex -f %1 %1.B64.txt 0x40000001
type %1.B64.txt| clip
timeout /t 5

Декодер. Сохранить в файл с именем dec64.bat

@echo off
if "%1" == "" echo usage: dec64 filename.txt && pause && exit
certutil -decode -f %1 %1.ext
timeout /t 5

Пример работы

Что дальше?

Готово: