background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "Umbraco 8 Surface Controllers: Going further"

input logo icon
Теги видео
|

Теги видео

umbraco
tutorial
umbraco cloud
how to
guide
cms
Content Management System
Umbraco CMS
Umbraco Heartcore
Umbraco Uno
umbraco forms
umbraco deploy
Helper methods
Extension methods
Validation
Fieldtypes and properties
ModelState
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:00
на данный момент у нас
00:00:02
на веб-сайте есть полнофункциональная форма отправки статьи,
00:00:04
что и было основной целью этой
00:00:06
главы.
00:00:07
Теперь в этом видео мы пойдем
00:00:09
немного дальше и добавим немного
00:00:12
дополнительных возможностей в форму, над которой
00:00:13
будем работать. с некоторыми расширениями
00:00:15
и опциями проверки, и мы также
00:00:18
рассмотрим, какие еще у
00:00:19
вас есть варианты, позволяющие пользователям добавлять
00:00:22
еще больше данных в статьи, которые они
00:00:23
будут отправлять с вашего веб-сайта.
00:00:26
Давайте начнем
00:00:28
с предыдущего видео, которое мы рассмотрели.
00:00:30
весь процесс размещения
00:00:32
полной статьи на нашем веб-сайте
00:00:34
последнее, что мы сделали, это добавили ли мы
00:00:36
статью,
00:00:38
добавили тест с изображением, в
00:00:42
котором теперь есть все, что
00:00:46
мы получаем, когда пользователь заполняет все
00:00:48
поля в форме
00:00:49
но что произойдет, если вы не заполните
00:00:52
ни одно из полей, давайте проверим это сейчас, поэтому
00:00:55
мы вернемся к нашей форме отправки
00:00:57
здесь, прокрутим прямо
00:00:59
вниз
00:01:00
и нажмем «Отправить», ага, похоже, мы столкнулись с
00:01:04
ошибкой в коде здесь и что
00:01:06
он говорит,
00:01:07
хорошо, у него нет имени, которое можно было бы использовать
00:01:09
для создания папки в
00:01:12
разделе мультимедиа, и поскольку папке, очевидно,
00:01:14
нужно имя,
00:01:15
она не может завершить метод здесь, поэтому
00:01:19
сейчас не удается обойти это проблема, мы будем
00:01:21
использовать некоторые расширения,
00:01:24
это состоит из нескольких методов,
00:01:26
которые позволят нам выполнить пару
00:01:28
проверок, прежде чем мы начнем создавать какие-либо новые
00:01:31
медиа-элементы,
00:01:32
хорошо, давайте сначала остановим наш проект,
00:01:35
вот и все,
00:01:37
расширения будут использовать
00:01:39
уже являются частью проекта, вы можете
00:01:41
найти их здесь, в папке helpers.
00:01:45
Возможно, вам придется включить файл в
00:01:47
проект, прежде чем вы сможете его использовать, поэтому для этого
00:01:48
щелкните правой кнопкой мыши файл и выберите «
00:01:51
Включить в проект», вот и все,
00:01:54
давайте возьмем беглый взгляд на этот файл,
00:01:57
всего у него три метода:
00:02:01
первый метод здесь проверит наличие
00:02:03
файлов в перечисляемом объекте, который в
00:02:07
нашем случае будет полем загрузки избранного изображения,
00:02:11
второй метод здесь
00:02:13
использует третий метод, чтобы проверить, является ли
00:02:16
объект или поле загрузки содержит любое
00:02:18
изображение,
00:02:19
а затем третий метод здесь
00:02:23
используется для проверки того, являются ли файлы, добавленные
00:02:25
в поле загрузки, на самом деле изображением,
00:02:28
поэтому метод, который используется здесь во
00:02:30
втором методе, подходит,
00:02:32
поэтому давайте вернемся к нашему контроллеру
00:02:35
здесь
00:02:36
и найдите, где мы начинаем работать над нашим
00:02:39
полем загрузки,
00:02:42
и это прямо здесь, конфиденциальность избранных изображений,
00:02:45
хорошо,
00:02:47
давайте освободим здесь немного места,
00:02:50
хорошо, я подготовил небольшой фрагмент для
00:02:53
этого, чтобы вам не пришлось смотреть, как я печатаю
00:02:54
снова,
00:02:55
так что позвольте я просто вставлю это сюда, вот и все,
00:03:00
поэтому мы собираемся обернуть весь наш код,
00:03:02
связанный с полем загрузки, в оператор if,
00:03:05
оператор if использует расширения, чтобы
00:03:08
убедиться,
00:03:09
что если в поле перегрузки есть какие-либо поля,
00:03:11
то они действительно
00:03:14
изображения,
00:03:15
и нам нужно убедиться, что мы
00:03:17
ссылаемся здесь на наши вспомогательные методы, поэтому,
00:03:21
используя помощники полей статьи, позвольте мне показать, что
00:03:25
все добавлено правильно, оно добавлено здесь, вверху,
00:03:29
хорошо,
00:03:31
и нам также нужно закрыть
00:03:34
оператор if Итак,
00:03:36
все здесь,
00:03:38
давайте немного переместим это
00:03:41
и
00:03:43
закроем, если
00:03:45
отлично,
00:03:47
теперь код здесь, весь код,
00:03:49
связанный с полем загрузки,
00:03:52
будет выполняться только в том случае, если изображение было
00:03:55
добавлено в поле обновления,
00:03:57
хорошо, давайте попробуем
00:03:59
запустить проекты
00:04:02
и перейдите к нашей форме отправки
00:04:07
и снова здесь, давайте нажмем «Отправить»
00:04:11
еще одну стрелку,
00:04:12
окей, теперь это новый, на этот раз он выглядит
00:04:15
так, как будто
00:04:16
он говорит, что не может
00:04:18
сохранить контент, не дав ему имя,
00:04:21
окей, это кажется разумным,
00:04:23
поэтому давайте закроем наш проект снова,
00:04:27
и мы запустим его еще раз,
00:04:30
и на этот раз мы заполним
00:04:32
поле имени как единственное,
00:04:35
поэтому наша форма отправки находится здесь,
00:04:37
и давайте просто
00:04:39
добавим сюда имя,
00:04:41
тест статьи,
00:04:44
хорошо, прокрутите вниз и нажмите «
00:04:46
Отправить». еще раз
00:04:49
хорошо, ошибок нет, на этот раз
00:04:52
мы представляем здесь пустую форму,
00:04:54
что и происходило в
00:04:56
других случаях, когда мы отправляли форму
00:04:59
и она была успешно заполнена,
00:05:01
давайте проверим раздел статей
00:05:05
да, похоже, у нас здесь есть новая статья
00:05:07
отлично,
00:05:09
но опять же,
00:05:11
мы не хотим, чтобы пользователи могли
00:05:12
отправлять статью, в которой указано только правильное имя,
00:05:16
и, что еще хуже, мы не хотим, чтобы они
00:05:18
столкнулись с той ошибкой, которую мы получили, когда мы
00:05:20
не указали имя
00:05:22
сейчас, чтобы предотвратить это вот тут-то и
00:05:24
происходит проверка,
00:05:26
это даст нам возможность
00:05:28
фактически проверить данные, которые поступают,
00:05:30
прежде чем они будут отправлены, и прежде чем весь
00:05:33
наш код в контроллере будет выполнен,
00:05:35
мы сначала добавим проверку как на стороне сервера, так и на
00:05:37
стороне клиента,
00:05:39
давайте решим какие поля в нашей
00:05:42
форме должны быть обязательными для
00:05:44
отправки статьи,
00:05:45
поэтому давайте вернемся в Visual Studio, я
00:05:48
просто
00:05:49
закрою это,
00:05:50
вот и начнем, давайте начнем с рассмотрения
00:05:53
нашей модели статьи, где мы уже
00:05:56
определили некоторые необходимые свойства, поэтому это
00:05:59
здесь,
00:06:00
да, мы установили
00:06:02
название статьи,
00:06:04
содержание статьи и имя автора как
00:06:07
обязательные, что, я думаю, выглядит
00:06:09
разумным, на данный момент вы можете установить
00:06:11
больше этих приоритетов по мере необходимости, если
00:06:13
хотите, а
00:06:14
теперь давайте продолжим в наш файл формы статьи,
00:06:17
который у нас есть,
00:06:19
и мы добавим некоторую
00:06:21
проверку на стороне сервера,
00:06:23
поэтому теперь, когда мы определили, какие из
00:06:25
свойств должны потребоваться, нам
00:06:27
нужно добавить сообщения проверки
00:06:29
в соответствующее поле в нашей форме,
00:06:32
поэтому мы начнем с
00:06:34
поля для названия статьи здесь,
00:06:37
создадим новую строку и назовем
00:06:44
четвертое сообщение проверки HTML,
00:06:45
и мы сделаем вот так,
00:06:48
и там мы будем использовать имя,
00:06:52
а затем выполним то же самое касается
00:06:54
содержания статьи и имени автора,
00:06:57
и я просто скопирую и вставлю это,
00:07:00
и
00:07:02
поэтому статья появится здесь, обязательно
00:07:05
обновите
00:07:06
имя,
00:07:07
а также имя автора здесь,
00:07:11
и я могу обновить имя, вот и
00:07:15
последнее, что нам нужно. Для этой
00:07:17
проверки на стороне сервера нам нужно
00:07:19
добавить еще один оператор if к нашему
00:07:20
контроллеру, поэтому давайте просто найдем его
00:07:22
здесь,
00:07:24
а затем полностью в начале
00:07:26
метода отправки,
00:07:28
поэтому
00:07:29
здесь
00:07:30
мы добавим фрагменты,
00:07:35
которые проверят, будет ли данные в
00:07:37
модели на самом деле действительны,
00:07:39
и если это не так, она вернет
00:07:41
текущую страницу umbraco,
00:07:43
и мы должны увидеть наши сообщения проверки,
00:07:46
все в порядке, теперь мы добавили
00:07:48
проверку на стороне сервера, давайте посмотрим, как это выглядит,
00:07:51
поэтому мы перейдем к наша форма отправки здесь
00:07:54
и непосредственно для
00:07:56
отправки,
00:07:57
хорошо, она переходит прямо на самый верх здесь,
00:08:00
и вы можете видеть, что у нас
00:08:02
здесь есть несколько сообщений проверки, например, поле имени является
00:08:04
обязательным,
00:08:05
поле содержания статьи является обязательным
00:08:07
и поле имени автора является обязательным,
00:08:10
так что это было проверка на стороне сервера,
00:08:13
теперь давайте рассмотрим возможность добавления
00:08:15
проверки на стороне клиента, а также
00:08:18
давайте закроем проект еще раз, вот и
00:08:21
мы
00:08:23
сейчас, чтобы добавить проверку на стороне клиента,
00:08:25
нам нужно добавить
00:08:27
сюда дополнительный пакет в наш проект,
00:08:29
поэтому мы Откроем инструмент управления пакетами
00:08:31
здесь, из инструментов,
00:08:36
мы перейдем на вкладку просмотра,
00:08:38
здесь мы найдем
00:08:41
пакет под названием
00:08:43
microsoft jquery unobtrusive,
00:08:50
выберем здесь первый
00:08:53
и установим его в наш проекты,
00:08:56
нажмите «Установить»,
00:08:58
и мы захотим установить это и
00:09:01
принять лицензию. Хорошо,
00:09:03
теперь, когда пакет установлен,
00:09:06
нам нужно убедиться, что сценарии
00:09:07
указаны в нашем основном шаблоне,
00:09:09
поэтому давайте найдем это и откроем этот
00:09:13
основной шаблон, вот и начнем.
00:09:15
и здесь внизу
00:09:18
мы добавим эти два сценария:
00:09:20
один для проверки jquery и один для
00:09:22
проверки jquery, ненавязчиво,
00:09:25
все в порядке, последнее, что нам нужно сделать,
00:09:27
это добавить пару настроек приложения в
00:09:29
нашу веб-конфигурацию,
00:09:30
так что давайте продолжим и откроем нашу сеть.
00:09:32
config,
00:09:34
и мы прокрутим до нижней части
00:09:36
раздела настроек приложения
00:09:39
здесь,
00:09:40
и давайте освободим немного места
00:09:42
и вставим два ключа:
00:09:45
первый
00:09:46
включает проверку на стороне клиента,
00:09:49
а второй включает ненавязчивую
00:09:52
проверку, это тоже
00:09:54
здорово, что было все, что нам нужно для
00:09:55
проверки на стороне клиента,
00:09:58
теперь давайте убедимся, что мы сохранили эти два
00:10:00
файла с изменениями,
00:10:02
и давайте продолжим
00:10:03
и протестируем это,
00:10:06
и давайте продолжим и отправим сюда нашу пустую
00:10:08
форму еще раз,
00:10:10
все в порядке, похоже, у нас также есть
00:10:12
клиентская сторона проверка теперь
00:10:14
отличная, теперь
00:10:15
был какой-то вариант проверки.
00:10:18
Следующее, что мы собираемся рассмотреть, это то, что
00:10:20
происходит, когда форма успешно отправлена,
00:10:23
поэтому, когда все проходит проверку
00:10:25
и новая статья добавляется в
00:10:27
коллекцию статей, которую
00:10:28
мы уже видели что когда мы отправляем
00:10:30
статью и она завершается, нас просто
00:10:32
перенаправляют на ту же страницу,
00:10:35
только со всеми пустыми полями,
00:10:37
было бы здорово, если бы вместо
00:10:39
этого мы могли сообщить пользователю, что его
00:10:41
статья была отправлена ​​и, возможно,
00:10:43
даже добавьте ссылку непосредственно на
00:10:46
коллекцию статей, где они смогут найти свою новую
00:10:47
статью, что-то
00:10:48
вроде предоставления пользователю
00:10:50
обратной связи,
00:10:52
давайте сделаем это сейчас, чтобы закрыть
00:10:54
проекты,
00:10:57
и для этого мы начнем с
00:10:59
контроллера и работать
00:11:01
полностью внизу,
00:11:03
поэтому после того, как мы сохраним статью здесь,
00:11:07
мы будем использовать
00:11:08
временные данные, чтобы добавить
00:11:11
ключ успеха,
00:11:13
подобный этому,
00:11:15
и установим для него значение true,
00:11:18
это означает, что когда метод отправки
00:11:20
будет завершен и статья была
00:11:22
создана и сохранена, мы получим действительный
00:11:25
ключ успеха, теперь этот ключ мы будем использовать в
00:11:28
нашей форме статьи, поэтому давайте перейдем сюда
00:11:31
и обернем
00:11:32
все это здесь
00:11:34
в оператор if,
00:11:37
чтобы мы
00:11:38
все это захватили здесь
00:11:42
и поместим его в наши операторы if,
00:11:46
и мы сможем избавиться от знака добавления здесь,
00:11:50
там у нас
00:11:52
все в порядке,
00:11:54
и здесь мы скажем, что если
00:11:57
ключ данных temp успеха
00:11:59
равен нулю,
00:12:00
то это означает, что если он не был установлен, то
00:12:03
мы покажем форму здесь,
00:12:05
а затем
00:12:06
ниже
00:12:07
мы добавим
00:12:08
операторы else,
00:12:11
чтобы это было то, что будет отображаться, когда
00:12:13
статья была успешно добавлена
00:12:16
и ключ успеха действителен,
00:12:19
поэтому мы добавим здесь некоторые отзывы для
00:12:20
пользователя,
00:12:22
поэтому мы' Я добавил, что новая статья
00:12:25
успешно создана, молодец,
00:12:27
а затем ссылка на коллекцию статей,
00:12:31
хорошо, давайте сохраним файл
00:12:33
и попробуем его,
00:12:36
так что на этот раз давайте действительно добавим в
00:12:39
него немного контента,
00:12:50
хорошо, давайте отправим это
00:12:54
выглядит так все прошло успешно, так как теперь мы
00:12:56
получаем отзывы здесь, а не в
00:12:58
пустой форме, хорошо, и давайте перейдем
00:13:00
к нашей
00:13:01
коллекции статей, просто чтобы проверить,
00:13:04
да, наша новая статья прямо здесь,
00:13:07
отлично подходит
00:13:09
для следующей и последней части этого
00:13:11
видео, давайте быстро Посмотрите, какие
00:13:13
еще есть варианты, чтобы
00:13:15
еще больше разнообразить нашу форму отправки
00:13:18
различными типами полей и свойств.
00:13:22
До сих пор мы использовали только некоторые текстовые поля,
00:13:25
некоторые текстовые области и поле загрузки.
00:13:27
Есть много других опций, которые можно
00:13:29
использовать, чтобы позволить пользователи добавляют еще больше
00:13:31
данных в эти статьи. Это может быть
00:13:34
раскрывающийся список, в котором они выбирают, к какой
00:13:36
категории будет относиться статья.
00:13:39
Это может быть флажок, позволяющий пользователю
00:13:41
решить, хотят ли они, чтобы
00:13:43
информация об авторе отображалась вместе со
00:13:45
статьей или нет.
00:13:46
вариантов много, и на самом деле
00:13:48
только от вас зависит, как вы хотите создать
00:13:50
форму
00:13:51
сейчас, чтобы добавить любой из этих множества
00:13:54
параметров, вам нужно будет внести изменения в
00:13:56
четырех разных местах,
00:13:58
первое место — в бэк-офисе
00:14:01
проекта,
00:14:04
поэтому свойства в первую очередь необходимо
00:14:06
добавить к типу документа статьи,
00:14:09
который используется для определения данных
00:14:11
о самой статье,
00:14:13
поэтому для типа документа здесь вы можете добавить
00:14:15
дополнительные свойства,
00:14:17
и, как вы можете видеть в диалоговом
00:14:19
окне здесь, вы у вас есть множество различных
00:14:22
свойств для выбора:
00:14:24
следующим шагом будет добавление этого свойства в
00:14:27
модель статьи в Visual Studio,
00:14:31
чтобы мы нашли нашу модель статьи здесь,
00:14:34
так же, как мы это делали с
00:14:37
именем и кратким содержанием статьи, и все
00:14:40
это вы Здесь также нужно будет создать новое
00:14:41
свойство, используя правильный
00:14:44
тип объекта для типа данных,
00:14:45
которые будут добавлены
00:14:47
сейчас. Третий шаг — добавить поле для
00:14:49
него в форме отправки,
00:14:52
поэтому используйте помощник html, как мы это сделали. закончили
00:14:56
с другими полями здесь, вам нужно
00:14:58
добавить правильные типы полей в форму.
00:15:00
Четвертый и последний шаг — убедиться,
00:15:03
что любые данные, введенные в это
00:15:05
поле, также сохраняются при отправке формы,
00:15:09
это делается из контроллера,
00:15:12
так
00:15:13
же, как мы сделали с другими
00:15:15
свойствами содержимого статьи имени,
00:15:17
и так и так,
00:15:19
нам нужно использовать
00:15:20
метод set value, используя имя
00:15:23
свойства модели и сопоставляя его
00:15:25
с соответствующим свойством
00:15:27
типа документа статьи,
00:15:29
теперь это может звучать как много, но
00:15:34
вы хотите добавить только те четыре шага для каждого свойства в поле, чтобы
00:15:36
помочь вам в этом процессе. Я
00:15:37
рекомендую вам держать документацию по пропитке под
00:15:39
рукой
00:15:41
в ​​разделе свойств здания.
00:15:44
Вы можете найти
00:15:45
статью для каждого из свойств по умолчанию
00:15:47
в obrecho,
00:15:49
и в каждой из этих статей вы
00:15:52
найдете подробную информацию о том, какой тип объекта
00:15:54
возвращает конфиденциальность, вы можете узнать больше о
00:15:57
различных параметрах конфигурации,
00:16:00
а затем, наконец,
00:16:01
здесь внизу вы также сможете
00:16:03
увидеть пример того, как вы можете установить
00:16:05
значение конфиденциальности программно — это
00:16:08
именно то, что вам нужно для вашего контроллера,
00:16:11
и на этом мы подошли к концу
00:16:13
всей этой главы о контроллерах служб
00:16:17
и о том, как их можно использовать для создания как
00:16:18
контента, так и мультимедиа программно.
00:16:22
Конечные результаты —
00:16:23
веб-сайт с формой отправки. который
00:16:26
позволяет пользователю добавлять статьи с контентом
00:16:28
и изображениями в коллекцию статей,
00:16:32
и все это обрабатывается одним и тем же
00:16:34
контроллером,
00:16:35
использующим медиа и службу контента
00:16:37
для взаимодействия с медиа и
00:16:39
API контента.
00:16:40
На странице документации для этого видео
00:16:42
вы найдете возможность загрузить
00:16:44
завершенный проект, который мы создали
00:16:46
на протяжении всей этой главы. Вы также
00:16:48
найдете более подробную информацию о том, что было
00:16:50
рассмотрено в этом видео, а также ссылки
00:16:52
на соответствующую документацию.
00:16:55
Надеюсь, вы многому научились,
00:16:56
просмотрев эти видеоролики в этой главе. Меня
00:16:59
зовут Софи, и мне было здорово
00:17:01
помочь вам пройти через многие этапы
00:17:02
пути. Большое спасибо за просмотр,
00:17:05
до следующего раза.

Описание:

In this video, you will be extending the form and the flow that you've already set up throughout this chapter so far. With all the basics in place, why not add some validation and create a great user experience for the people who will be using the form on your website? Prev Video: https://www.youtube.com/watch?v=ZFJJbcKnXUQ&list=PLgX62vUaGZsENREE3fYEbJUlieL6DFgXf&index=8&t=15s Video Playlist: https://www.youtube.com/playlist?list=PLgX62vUaGZsENREE3fYEbJUlieL6DFgXf You can also visit the Umbraco Documentation for written guides about Umbraco via this link https://docs.umbraco.com/welcome

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "Umbraco 8 Surface Controllers: Going further"?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "Umbraco 8 Surface Controllers: Going further" выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "Umbraco 8 Surface Controllers: Going further"?mobile menu icon

  • Полностью зависать браузер/компьютер не должен! Если это произошло, просьба сообщить об этом, указав ссылку на видео. Иногда видео нельзя скачать напрямую в подходящем формате, поэтому мы добавили возможность конвертации файла в нужный формат. В отдельных случаях этот процесс может активно использовать ресурсы компьютера.

mobile menu iconКак скачать видео "Umbraco 8 Surface Controllers: Going further" на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "Umbraco 8 Surface Controllers: Going further"?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "Umbraco 8 Surface Controllers: Going further"?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.