Набросал вам небольшую функцию для вставки файла в поле по ссылке:
// Функция для вставки файла в поле input:
async function setFile(input, name, url) {
try {
var blob = await (await fetch(url)).blob();
var dt = new DataTransfer();
dt.items.add(new File([blob], name, {type: blob.type}));
input.files = dt.files;
console.log('Файл успешно вставлен:');
console.dir(input.files);
return true;
}
catch(err) {
console.log('Ошибка при вставке файла:');
console.dir(err);
return false;
}
}
Первым параметром в функцию передаёте ссылку на само поле, вторым параметром желаемое название для файла, а третьим параметром ссылку на файл. Например:
// Входные параметры:
var input_element = document.querySelector('input[type="file"]');
var file_name = 'Мое музло.mp3';
var file_link = 'https://ваш-сайт.рф/music.mp3';
// Вызовем функцию для вставки файла:
setFile(input_element, file_name, file_link);
Работать это будет при условии, что файл находится на том же домене, что и форма с полем. Иными словами, бесполезно вставлять ссылки на сторонние сайты! Поэтому прежде чем вставлять видео, озаботьтесь тем, что загрузить это видео на свой сайт.
Дополнительная информацияТакже вместе третьего параметра можно передавать не ссылку на файл, а уже сам файл в представлении base64 - это когда файл конвертируется в длинный-длинный зашифрованный текст. Чтобы перегнать какой-нибудь файл в base64, вы можете использовать
онлайн сервисы, вам наверное так будет проще всего.
Только зачем так заморачиваться, если можно просто положить файл внутри своего сайта и при вставке банально указывать ссылку на него?