Blob. Как загрузить файл, переименовать и тут же скачать
С Blob все просто, но у меня как всегда ничего не работает. Читал тут
https://learn.javascript.ru/blob и https://learn.javascript.ru/file нужно сделать поле input <input id="file" type="file" > в которую мы выбираем файл (файлы) с любым расширением, скрипт добавляет к имени еще слово "test_" и отправляет на скачивание Вот даже рабочий пример https://jsfiddle.net/zip13/yfjn6g2x/6/ с огромной библиотекой. По сути то, что мне нужно сделать (только без библиотеки). И вот мои потуги, которые не работают <input type="file" onchange="readFile(this)"> <script> function readFile(input){ let link = document.createElement('a'); link.download = 'hello.txt'; let file = input.files[0]; let blob = new Blob(file, {type: 'text/plain'}); link.href = URL.createObjectURL(blob); link.click(); } </script> И еще вопрос. Можно как-то скачать blob без создания ссылки и без CORS? каким-то более очевидным способом? |
Цитата:
sovsem-nub, если вам не нужна работа в старых браузерах, то тот код можно сократить до... <input type="file" onchange="download(this.files[0], 'test_'+this.files[0].name)"> <script> function download(file, fileName) { const link = document.createElement("a"); const objectURL = URL.createObjectURL(file); link.download = fileName; link.href = objectURL; document.body.append(link); requestAnimationFrame(() => { link.click(); link.remove(); URL.revokeObjectURL(objectURL); }); } </script> Цитата:
Цитата:
|
Цитата:
|
Минусующим. Какого ...
Я трачу время на примеры решения а вы бл... , что творите? <input type="file" onchange="download(this.files[0])"> <script> function buildElement(tagName, props) { var element = document.createElement(tagName); for (var propName in props) element[propName] = props[propName]; return element; } function download(file) { var reader = new FileReader; reader.onload = function () { var link = buildElement('a', {download: 'test_' + file.name, href: reader.result}); link.click(); link.remove(); }; reader.readAsDataURL(file); }; </script> |
Часовой пояс GMT +3, время: 16:17. |