Вы можете программно вставить изображение в поле
input[type="file"] за пользователя следующим способом:
(async function () {
// Ссылка на целевое изображение:
var link = 'https://yousite.ru/image.jpg';
// Скачиваем изображение, как Blob:
var blob = await (await fetch(link)).blob();
// Из ссылки достаем имя файла (он идет после слеша):
var file_name = new URL(link)['pathname'].replace('/', '');
// Преобразуем Blob в File используя имя файла и MIME-тип:
var file = new File([ blob ], file_name, { type: blob.type });
// При помощи DataTransfer создадим коллекцию файлов FileList с файлом:
var dt = new DataTransfer(); dt.items.add(file); var file_list = dt.files;
// Вставим созданную коллекцию файлов с нашим файлом в input:
document.querySelector('input[type="file"]').files = file_list;
// Заставим сработать обработчики изменения на поле вставки, если они есть:
document.querySelector('input[type="file"').dispatchEvent(new Event('change'));
// После завершения операции выведем уведомление в консоли:
console.log('Коллекция файлов вставлена в поле:', file_list);
})();