Загрузка файлов с фронтенда

  Рет қаралды 49,080

Михаил Непомнящий

Михаил Непомнящий

Жыл бұрын

Для асинхронной отправки файлов с фронтенда на сервер необходимо создать специальный объект FormData и прикрепить к нему нужные документы, загруженные пользователем через стандартный элемент формы.
Мои курсы по вебу с купонами:
✅ mishanep.com/
📢 Поддержка канала:
/ mishanep
www.tinkoff.ru/rm/nepomnyasch...
paypal.me/mishanep

Пікірлер: 83
@HeaDannn
@HeaDannn Жыл бұрын
Редко коменты пишу, но ваш контент достоин высшей оценки. Без воды, в спокойном темпе и с объяснением кажого шага в нужной мере. Великолепно преподаете!
@ta_ivanova
@ta_ivanova Жыл бұрын
Не ожидала столько полезностей в одном видео! Спасибо от совсем начинающего фронтендера и, вероятно, от наставника, которого Вы избавили от некоторого количества дурацких вопросов!
@user-bp7jb5of5d
@user-bp7jb5of5d Жыл бұрын
Михаил, спасибо Вам за еще одно полезное видео! Доходчиво, понятно - высший класс!!!
@user-fl2qf6ye4b
@user-fl2qf6ye4b Жыл бұрын
все лучи добра уже на подлете к вам! 💋💋💋 уже в который раз самую исчерпывающую инфу нахожу на этом замечательном канале!
@ruslangaziev5032
@ruslangaziev5032 Жыл бұрын
Михаил, спасибо большое за отличное видео!!! Очень полезно как и все ваши видео и курсы!
@user-nk6ih7uh1h
@user-nk6ih7uh1h Жыл бұрын
Огромное вам спасибо, Михаил! Видео, как всегда, на высочайшем уровне!
@user-yt2dj8cv4j
@user-yt2dj8cv4j Жыл бұрын
Очень интересно, и полезно. Отдельное спасибо за позитив)
@user-on9th4lj3i
@user-on9th4lj3i 7 ай бұрын
Огромное спасибо за крайне полезную инфу. На проекте столкнулся с задачей по загрузке файлов (правда проект на Angular), и очень помогло данное видео.
@front-cat
@front-cat Жыл бұрын
Каждый раз натыкаюсь на твои ролики по разным темам, и они прям бальзам на стертые об клавиатуру пальцы
@nikitamusic7073
@nikitamusic7073 Жыл бұрын
Михаил, вы не представляете, как часто когда у меня возникает вопрос, я обращаюсь к вашим роликом. Спасибо вам!) (Я Junior developer 11 мес. стаж)
@Pagegift
@Pagegift Жыл бұрын
Отличное видео! Объяснил, как по полочкам разложил! Спасибо!
@user-wu9ld1rg9j
@user-wu9ld1rg9j Жыл бұрын
Как всегда на высшем уровне. Спасибо!
@user-rw3ry9bd6l
@user-rw3ry9bd6l Жыл бұрын
Отличный контент. Спасибо за труд, жду новых видео
@oberoberus3807
@oberoberus3807 Жыл бұрын
Как раз то, что нужно! Спасибо большое!
@user-kw8cq6cd6y
@user-kw8cq6cd6y Жыл бұрын
Ещё через тег label можно элегантно скрыть и стилизовать input
@olehy5000
@olehy5000 Жыл бұрын
О! Супер! Спасибо! Как всегда полезно!
@tuku_mann
@tuku_mann Жыл бұрын
Отличный урок, спасибо!
@Vladimir-gf7es
@Vladimir-gf7es Жыл бұрын
Свойство accept не запрещает пользователю выбирать другие типы файлов, он все еще имеет возможность выбрать "все файлы" и загрузить pdf, вместо указанного нами image/*. Поэтому требуется дополнительная проверка для такого случая
@MasterHobbitLoL
@MasterHobbitLoL Жыл бұрын
Михаил, как всегда отличное видео, но, если не сложно, прикладывайте пожалуйста исходный код в описании.
@ivanselyt
@ivanselyt Жыл бұрын
ему плевать на это
@user-yr3ub5gp3t
@user-yr3ub5gp3t Жыл бұрын
Большое спасибо! понятно и просто
@tema_skakun
@tema_skakun 10 ай бұрын
спасибо за разбор, полезно) в интернетах пишут, что fetch немного устарел. я реализовал с помощью библиотеки axios. привет всем самураям)
@giorgikiladze1151
@giorgikiladze1151 Жыл бұрын
круто как раз для проекта нужно было
@agrbear
@agrbear Жыл бұрын
Круто! Спасибо большое пс: жду курс тайпскрипт с реактом
@user-wu9ld1rg9j
@user-wu9ld1rg9j Жыл бұрын
+
@OliaYarukhina
@OliaYarukhina 10 ай бұрын
Super cool! Thank you so much!
@user-vm7su4rj7f
@user-vm7su4rj7f Жыл бұрын
Круто, спасибо!
@mikhail_shokun
@mikhail_shokun Жыл бұрын
Красавчик Мишаня Первый.
@IT-Svyatoslav
@IT-Svyatoslav Жыл бұрын
Благодарю Михаил! Как раз.на проектае необходимо это реализовать
@vovergg
@vovergg Жыл бұрын
Тема интересная.)
@weynemeynen
@weynemeynen Жыл бұрын
Михаил, освети, пожалуйста, тему использования графиков/диаграмм с React. Совсем мало русскоязычной инфы по этому вопросу.
@romanmed9035
@romanmed9035 Жыл бұрын
very good about uploading file to server
@ilaymorozoff4113
@ilaymorozoff4113 Жыл бұрын
Топ контент!)
@Nikitosss91
@Nikitosss91 Жыл бұрын
Как всегда топич.
@me29_hi8
@me29_hi8 7 ай бұрын
Полезное видео
@onetwoplay5226
@onetwoplay5226 Жыл бұрын
Михаил обЪясни пожалуйста почему две папки node modules, и какие зависимости в той, где public
@user-zk7ct8od7w
@user-zk7ct8od7w Жыл бұрын
всем привет! подскажите пожалуйста, что нужно дописать в код, чтобы с файлом отправился еще и текст введенный из инпута?
@chessclub92
@chessclub92 7 ай бұрын
спасибо большое Михаил у меня вопрос, а как после сохранения path-а в бд клиент с помощю этого path-а может на экране показать эту картинку ???
@user-hj6pj1bw9p
@user-hj6pj1bw9p Жыл бұрын
Есть предложение сделать приквел этого ролика, в котором рассказать о своем простеньком бэкенде. У тебя получается делать ролики и рассказывать.
@mishanep
@mishanep Жыл бұрын
Спасибо) Приквелов прежде делать не приходилось. А вот спиноффы бывали =)
@lionstar3189
@lionstar3189 Жыл бұрын
.visually-hidden { position: absolute; width: 1px; height: 1x; margin: -1px; border: 0; padding: 0; clip-path: inset(100%); clip: rect(0 0 0 0); background: transparent; overflow: hidden; } Я лично такие стили юзаю, если что то надо скрыть. Пользуйтесь. 1px, это для того что бы скрин ридеры могли видеть.
@stasbudin3178
@stasbudin3178 Жыл бұрын
Всем привет, пробую повторить код, но в req.files получаю undefined, долго не могу понять в чем причина
@sergeysharapov5945
@sergeysharapov5945 Жыл бұрын
Михаил подскажи пожалуйста, как сделать прогресс бар при загрузке файла ?
@mishanep
@mishanep Жыл бұрын
Посмотрите в сторону библиотеки axios. У нее есть встроенные хэндлеры onUploadProgress и onDownloadProgress, которые помогут реализовать прогресс бар.
@baileysli6235
@baileysli6235 Жыл бұрын
8:45 Зачем `useRef`? Это поведение решается обычным `` намного проще
@etemax
@etemax 8 ай бұрын
почему нельзя скрывать инпут тайп дата через display: none; ? все отлично работает)
@poiu7185
@poiu7185 Жыл бұрын
Давайте про скачку файлов с фронтенда
@rasul3d
@rasul3d Жыл бұрын
Подскажите пожалуйста, как называется плагин, который линиями показывает зону кода функции. Которая рисует вертикальную и горизонтальную линию как бы показывая границы кода. Спасибо.
@mishanep
@mishanep Жыл бұрын
Для этих целей плагинов не ставил. Может это особенность темы. Использую codesandbox.
@romantrutnev9467
@romantrutnev9467 Жыл бұрын
Почему-то не работает метод mv, есть ли какие-то альтернативы для него
@erzhan225
@erzhan225 Жыл бұрын
комментарий в продвижение
@grandorf5967
@grandorf5967 Жыл бұрын
Загрузка файлов на сервер - очень полезный скилл! Но как быть, если у нас input file с атрибутом multiple, и пользователь, скажем, выбрал три файла в инпут, потом одумался и захотел удалить один?
@mishanep
@mishanep Жыл бұрын
Сходу не отвечу, но думаю и это решаемо.
@user-ql1fm6uz9b
@user-ql1fm6uz9b Жыл бұрын
повторила данный код. Не сработал 👎
@paveldpv91
@paveldpv91 Жыл бұрын
Отличное видел ) очень информативно .а может сходу подскажите если имя файла на русском языке то он приходит на сервер иероглифами .как победить?)
@mishanep
@mishanep Жыл бұрын
Отличный вопрос. Для кириллицы и пробелов в ссылках обычно на фронте используется encodeURI, на сервере соответственно decodeURI. В принципе можно применить тот же подход и здесь. Есть еще вариант создать собственный функционал транслитерации, который бы еще до отправки преобразовывал бы кириллицу в латиницу.
@paveldpv91
@paveldpv91 Жыл бұрын
@@mishanep спасибо)))
@CJIu3eHb
@CJIu3eHb Жыл бұрын
Проще было бы label использовать вместо рефа.
@mishanep
@mishanep Жыл бұрын
Что вы имеете в виду? Есть пример?
@ilyamartynov2743
@ilyamartynov2743 Жыл бұрын
@@mishanep Имеется ввиду обернуть кнопку и input file в тег label
@mishanep
@mishanep Жыл бұрын
​@@ilyamartynov2743 ​ и как это поможет отказаться от ref? Я привел общий пример, где вместо кнопки может быть любой элемент для клика. Если это просто текст, то тогда да, лейбл подошел бы отлично. Но было бы странно пытаться стилизовать лейбл под кнопку или оборачивать лейблом изображение или какой-то другой элемент, не являющийся формой.
@CJIu3eHb
@CJIu3eHb Жыл бұрын
@@mishanep А, ну если как кнопку - то да, с рефом более js-way. Прошу простить, это уж я как-то слишком категорично топик-посте высказался. Хотя кнопку, наверное, тоже можно под label засунуть, но каких-то очевидных преимуществ уже нет: либо лишний тег, либо лишний js.
@user-fn2ud8ec3i
@user-fn2ud8ec3i Жыл бұрын
Михаил отличное видео! Только хотя бы на секунду показали весь код на back. Понятно, что можно найти в инете это все, но хотелось бы от вас увидеть, как вы это реализовали. У вас все-таки репутация!!!! Профессионала, а на просторах глобальной сети, кто во что горазд лепит... нету доверия((((((((((
@sdsd-ec8rw
@sdsd-ec8rw 8 ай бұрын
плохо что нет исходного кода
@user-mz7jm5ez9y
@user-mz7jm5ez9y Жыл бұрын
Все супер, подробно и доходчиво, но...а толку от этого кода, если у нас нет собственно кода с файла server.js? то есть не имея этого "простенького" бекенда, мы куда будем слать запросы? если это не тема этого видео, было бы неплохо хотя бы ссылку на бэк скинуть
@aleksprimetv
@aleksprimetv Жыл бұрын
есть для этого специально общедоступные сервера, для тестирования любых запросов, где и ошибки и 200 код можно получать, так что гугл в помощь.
@user-dy5sv1gx4v
@user-dy5sv1gx4v 7 ай бұрын
Привет а как загрузить папку с файлами?
@mishanep
@mishanep 7 ай бұрын
Не помню, чтобы была возможность загружать папку как таковую. Обыкновенно загружается архив с содержимым папки. Разве что Google Drive предлагает папку загружать, но не интересовался как именно они это делают.
@FoodMaks
@FoodMaks 8 ай бұрын
Привет, а можно код скачать?
@mishanep
@mishanep 8 ай бұрын
Не получится. Компьютер, на котором писалось видео давно отошел в мир иной, исходники не сохранились.
@chikenmacnugget
@chikenmacnugget Жыл бұрын
приятный спикер, однако
@user-ef2pn4zc8f
@user-ef2pn4zc8f Жыл бұрын
тханк ю, тичер
@olenakunina1
@olenakunina1 Жыл бұрын
у кого то получилось реализовать загрузку файлов по вот этому видосу?
@mishanep
@mishanep Жыл бұрын
Как грубо, однако. Если бы я получил такой комментарий на платном курсе, то еще бы понял. А когда делаешь бесплатный контент, то как-то уж совсем не заслужено. Я согласен, что без бэкенда видео, может, и не слишком полезно. Но, во-первых, у меня канал по фронтенду, и рассказывать людям как писать бэкенд я даже не начинал. В названии видео чётко фигурирует слово фронтенд. Во-вторых, я предполагаю, что если перед кем-то встала такая рабочая задача, то бэкенд написали коллеги. И если до реальных проектов пока далеко и не терпится попрактиковаться, то корректнее было бы попросить выложить копию бэкенда в открытый доступ, нежели демотивировать автора. Касаемо fetch, я не вполне понимаю про какое множество лет идет речь, учитывая относительную свежесть данного браузерного api. По моему опыту fetch используется на очень большом количестве проектов. Причем как на фронтенде, так и на бэкенде (с утилитами добавляющие аналогичный функционал для NodeJS). Более того, если бы я использовал условный ky вместо fetch, то было бы больше вопросов из серии "почему нельзя было сделать на fetch". Я стараюсь вводить в видео меньше сторонних инструментов.
@olenakunina1
@olenakunina1 Жыл бұрын
@@mishanep простите, не хотела вас лично обидеть, видео "не зашло", уже несколько месяцев пытаюсь написать загрузку файлов в свободное от работы время, но ни рабочего примера, ни видео, ни документации - ничего нет на такую казалось бы тривиальную задачу, просмотрела и прочитала и прописала уже километры - все бесполезно, уже на грани нервного истощения. Да вы делаете бесплатный контент, и да он довольно таки качественный, приятный голос, хорошо разжеван фронтенд здесь, но опять же к нему масса вопросов и опять же какие товарищи должны писать те несколько строчек бека не понятно и как вообще можно писать запросы не зная что там на сервере. По поводу "корректнее было бы попросить выложить копию бэкенда в открытый доступ, нежели демотивировать автора" - вас просили несколько человек в комментариях в разное время - все эти комментарии проигнорированы, за то на мой вы неожиданно ответили.
@mishanep
@mishanep Жыл бұрын
Если мы работаем с NodeJS, то как правило используется библиотека multer. А дальше возможны варианты, в зависимости от того, где и как мы планируем хранить сами файлы. Мне в основном попадались сценарии, когда это внешний сервис хранения файлов, и нужна была доп зависимость, типа webDav, чтобы выгрузить файл и получить на него корректную ссылку. Базовую работу с multer можно подсмотреть у Бреда Треверси kzbin.info/www/bejne/b4LdnqWfZryUl6c Но видео староватое, там могут быть изменения в новых версиях, как самой ноды, так и multer.
@alexvav2161
@alexvav2161 Жыл бұрын
@@olenakunina1 поиском пользоваться надо = Облачное хранилище :))) там все есть
@olenakunina1
@olenakunina1 Жыл бұрын
@@mishanep спасибо за ссылки, еще раз извините. Я очень сильно уперлась в стену и таки запихнула данное решение себе в аппу, и даже загрузились файлы, добавила пару строк в бек енд файл, который таки удалось слизать из видео и даже удалось достучаться до тех файлов на сервере из основного приложения ( в моем случае сервер работает по другому адресу и находится в отдельном проекте нежели вся аппа, как я ни старалась не удалось мне их помирить в одной папке), вашими ссылками пока не пользовалась, посмотрю обязательно. Пока при попытке перевести файл с полем загрузки на TS оно мне сломало все приложение 😅🤣, выгребаю ошибки. Еще раз спасибо что поддержали и ответили
@user-ge2qk4cm1j
@user-ge2qk4cm1j Жыл бұрын
+
@itsnerf1026
@itsnerf1026 Жыл бұрын
привет ты снимаешь классные видео продолжай и не сдавайся у тебя всё получится я TQжe CниmAю крутой кoнтент бyдy рaд Bидeть тeбя в нашeй семeйkе
@sergeykoshman8367
@sergeykoshman8367 Жыл бұрын
Смысл показывать код, который не работает и нет ссылки даже на github? :)
@iGotton
@iGotton Жыл бұрын
+
1❤️#thankyou #shorts
00:21
あみか部
Рет қаралды 81 МЛН
World’s Deadliest Obstacle Course!
28:25
MrBeast
Рет қаралды 48 МЛН
Omega Boy Past 3 #funny #viral #comedy
00:22
CRAZY GREAPA
Рет қаралды 37 МЛН
Increíble final 😱
00:37
Juan De Dios Pantoja 2
Рет қаралды 68 МЛН
Зачем на самом деле нужен хук useCallback
8:33
Михаил Непомнящий
Рет қаралды 38 М.
Docker за 20 минут
21:42
suchkov tech
Рет қаралды 61 М.
How to Upload Files in Node.js Using Express and Multer
6:52
James Q Quick
Рет қаралды 36 М.
Изображения в HTML: picture, srcset, sizes, lazy, форматы webp, avif
22:44
Предзагрузка данных через роутинг
24:48
Михаил Непомнящий
Рет қаралды 28 М.
1❤️#thankyou #shorts
00:21
あみか部
Рет қаралды 81 МЛН