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, время: 18:33. |