эти вещи очень легко гуглится, поэтому я не описывал их. По поводу вопроса: здесь нужно ещё определиться: ты хочешь, чтобы размер одного файла был ограничен размером или чтобы размер всех файлов в сумме были ограничены в размере? может же быть 1 файл, который весит 5 мб, а может быть 10 файлов, которые весят по 1мб. Это можно сделать на Js. У загружаемых файлов есть параметр file.size
по которому можно определить размер файла. Поводу выбора типа файла — это делается атрибутом html accept, либо на js. Вот на эту тему: https://askdev.ru/q/html-input-file-prinyat-tip-fayla-atributa-csv-3697/ . Этого всего нет в моей статье, так как я хотел максимально минимизировать её.