All language subtitles for 006 Adding Image Uploads to Form_Downloadly.ir_en

af Afrikaans
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bn Bengali
bs Bosnian
bg Bulgarian
ca Catalan
ceb Cebuano
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
tl Filipino
fi Finnish
fr French
fy Frisian
gl Galician
ka Georgian
de German
el Greek
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
km Khmer
ko Korean
ku Kurdish (Kurmanji)
ky Kyrgyz
lo Lao
la Latin
lv Latvian
lt Lithuanian
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mn Mongolian
my Myanmar (Burmese)
ne Nepali
no Norwegian
ps Pashto
fa Persian Download
pl Polish
pt Portuguese
pa Punjabi
ro Romanian
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
st Sesotho
sn Shona
sd Sindhi
si Sinhala
sk Slovak
sl Slovenian
so Somali
es Spanish
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
te Telugu
th Thai
tr Turkish
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
or Odia (Oriya)
rw Kinyarwanda
tk Turkmen
tt Tatar
ug Uyghur
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 00:00:01,290 --> 00:00:03,840 So let's now allow users 2 00:00:03,840 --> 00:00:07,883 to upload their photos right on our website. 3 00:00:09,610 --> 00:00:11,640 And so this is what we want. 4 00:00:11,640 --> 00:00:13,760 When we click here, we basically want 5 00:00:13,760 --> 00:00:15,915 to open a new window for which we can select 6 00:00:15,915 --> 00:00:19,370 a new image to upload and then when we click 7 00:00:19,370 --> 00:00:21,380 this button and submit a form 8 00:00:21,380 --> 00:00:23,990 of course then we want to upload that image 9 00:00:23,990 --> 00:00:27,520 into our backend and update the user, right. 10 00:00:27,520 --> 00:00:29,528 And so the first step into doing that 11 00:00:29,528 --> 00:00:33,400 will be to add a new input element to our html. 12 00:00:33,400 --> 00:00:35,490 So basically to our pack template 13 00:00:35,490 --> 00:00:37,850 which will then allow that file selector 14 00:00:37,850 --> 00:00:39,503 to open when we click here. 15 00:00:40,930 --> 00:00:43,800 So, let's go to our views 16 00:00:43,800 --> 00:00:48,800 and to account and so it's this form 17 00:00:49,010 --> 00:00:51,720 where we now have to add that input. 18 00:00:51,720 --> 00:00:55,420 So right now we have that link here which says new photo. 19 00:00:55,420 --> 00:00:58,800 But of course, it's not a link that we're going to use. 20 00:00:58,800 --> 00:01:01,280 So this was really just a placeholder. 21 00:01:01,280 --> 00:01:03,360 And so let's get rid of it. 22 00:01:03,360 --> 00:01:05,063 So what we need is an input. 23 00:01:06,280 --> 00:01:07,803 Off to type file. 24 00:01:09,955 --> 00:01:13,110 All right, so before, for the name 25 00:01:13,110 --> 00:01:15,980 we had an input with the type text. 26 00:01:15,980 --> 00:01:19,040 We also have input with the type of email 27 00:01:19,040 --> 00:01:22,925 and there are also a special ones for password. 28 00:01:22,925 --> 00:01:26,210 So input for password 29 00:01:26,210 --> 00:01:30,283 and so for files, there is one of course for files. 30 00:01:31,380 --> 00:01:35,263 We can then specify which kind of file we actually accept. 31 00:01:38,920 --> 00:01:40,950 And we can do something like this. 32 00:01:40,950 --> 00:01:43,410 Image and then all of them. 33 00:01:43,410 --> 00:01:46,210 So basically all formats get their images 34 00:01:46,210 --> 00:01:49,010 so which have a mind type starting 35 00:01:49,010 --> 00:01:50,823 with image are accepted here. 36 00:01:53,054 --> 00:01:55,780 Now let's also give this here a class name 37 00:01:55,780 --> 00:01:59,930 so that it appears nicely formatted on our page. 38 00:01:59,930 --> 00:02:03,660 And so this is the class name that I have in my css. 39 00:02:03,660 --> 00:02:06,940 And now also giving it an ID so that we can 40 00:02:06,940 --> 00:02:08,440 then select it in java script. 41 00:02:09,300 --> 00:02:12,690 Add that as photo and finally just like the 42 00:02:12,690 --> 00:02:15,840 other fields, we also give it a name. 43 00:02:15,840 --> 00:02:20,420 So name of photo as well. 44 00:02:20,420 --> 00:02:23,093 And of course it is photo because that's the name 45 00:02:23,093 --> 00:02:25,680 that we have in our user document 46 00:02:25,680 --> 00:02:29,063 and it's also the field name that multer is expecting. 47 00:02:30,106 --> 00:02:34,410 So this here is upload and then we also specify 48 00:02:34,410 --> 00:02:35,483 a label for it. 49 00:02:37,650 --> 00:02:40,293 And we set it to four and then the ID 50 00:02:40,293 --> 00:02:44,110 of the input element, all right. 51 00:02:44,110 --> 00:02:45,570 So I'm not sure if you're familiar 52 00:02:45,570 --> 00:02:47,890 with how that works in html 53 00:02:47,890 --> 00:02:49,640 but it's also not really important. 54 00:02:51,329 --> 00:02:53,600 So the way it happens is that when we click 55 00:02:53,600 --> 00:02:56,320 this label here, it will then actually activate 56 00:02:56,320 --> 00:02:58,610 the input element which has the ID 57 00:02:58,610 --> 00:03:00,500 that we specify here in form. 58 00:03:00,500 --> 00:03:03,870 And so in that case that is the photo, all right. 59 00:03:03,870 --> 00:03:05,343 And actually it's this label here 60 00:03:05,343 --> 00:03:09,403 which will have the text choose new photo. 61 00:03:11,030 --> 00:03:12,950 And so when we then click the label 62 00:03:12,950 --> 00:03:14,597 it will then activate this input 63 00:03:14,597 --> 00:03:16,830 which in turn will open up the window 64 00:03:16,830 --> 00:03:18,913 from which we can select a file. 65 00:03:20,060 --> 00:03:23,090 And so that's all we need to do for the input here. 66 00:03:23,090 --> 00:03:26,290 Now, just like before, there are two possible ways 67 00:03:26,290 --> 00:03:28,710 of sending this data to the server. 68 00:03:28,710 --> 00:03:31,480 So first, without the API as we did 69 00:03:31,480 --> 00:03:32,840 in one previous lecture. 70 00:03:32,840 --> 00:03:35,470 We already find the action that we want to take 71 00:03:35,470 --> 00:03:37,370 and also the method. 72 00:03:37,370 --> 00:03:38,760 And with that the data is 73 00:03:38,760 --> 00:03:41,180 then directly sent to the server. 74 00:03:41,180 --> 00:03:43,130 Now if we wanted to send a file 75 00:03:43,130 --> 00:03:45,440 using this method, we then would need 76 00:03:45,440 --> 00:03:47,220 to specify another option here. 77 00:03:47,220 --> 00:03:49,801 And that is the enc type. 78 00:03:49,801 --> 00:03:54,520 So enc type would have to be multi-part form data. 79 00:03:54,520 --> 00:03:59,520 So multi-part slash form data, all right. 80 00:04:02,530 --> 00:04:06,090 And so here again, we have this name multi-part. 81 00:04:06,090 --> 00:04:07,948 And so as we said before, multi-part 82 00:04:07,948 --> 00:04:11,220 is always for sending files to the server. 83 00:04:11,220 --> 00:04:13,864 And again we actually need the multer middleware 84 00:04:13,864 --> 00:04:17,164 to handle this multi-part form data, all right. 85 00:04:17,164 --> 00:04:20,649 And actually the name multer comes from multi-part. 86 00:04:20,649 --> 00:04:23,317 So mult, multer, okay. 87 00:04:23,317 --> 00:04:26,830 Anyway again if we wanted to send the data 88 00:04:26,830 --> 00:04:29,320 without an API, we would always have 89 00:04:29,320 --> 00:04:31,200 to specify this enc type. 90 00:04:31,200 --> 00:04:33,740 Otherwise the form would simply ignore the file 91 00:04:33,740 --> 00:04:35,623 and not send it, okay. 92 00:04:35,623 --> 00:04:38,370 But as we already know, we are actually 93 00:04:38,370 --> 00:04:41,780 using it with the API, right. 94 00:04:41,780 --> 00:04:44,727 And so we do not need to specify this enc type 95 00:04:44,727 --> 00:04:48,630 but we will kind of have to do it programmatically. 96 00:04:48,630 --> 00:04:51,382 And so let's actually do that. 97 00:04:51,382 --> 00:04:54,180 So let's now send our data, including 98 00:04:54,180 --> 00:04:56,920 of course the photo by doing an API call 99 00:04:56,920 --> 00:04:59,970 such as we've been doing in the last section. 100 00:04:59,970 --> 00:05:04,100 And so we need to now open in our public folder 101 00:05:04,100 --> 00:05:08,973 and from their js, we open up index.js. 102 00:05:10,360 --> 00:05:13,560 And so right here is where we actually 103 00:05:13,560 --> 00:05:17,010 send the data to be updated on the server. 104 00:05:17,010 --> 00:05:19,260 Well we're not really sending them here 105 00:05:19,260 --> 00:05:21,960 but we're selecting them from the form 106 00:05:21,960 --> 00:05:24,790 and then passing them into update settings. 107 00:05:24,790 --> 00:05:27,260 All right, but now remember how I said 108 00:05:27,260 --> 00:05:29,590 that we kind of needed to programmatically 109 00:05:29,590 --> 00:05:32,660 recreate a multi-part form data? 110 00:05:32,660 --> 00:05:34,893 And so we need to do it like this. 111 00:05:42,020 --> 00:05:46,740 Let's call it form and then new form data. 112 00:05:48,580 --> 00:05:51,200 All right, and now onto that form 113 00:05:51,200 --> 00:05:53,883 we need to keep appending new data. 114 00:05:53,883 --> 00:05:57,152 And basically one append for each 115 00:05:57,152 --> 00:05:59,143 of the data that we want to send. 116 00:06:00,370 --> 00:06:04,400 So form.append and the first one is the name. 117 00:06:04,400 --> 00:06:08,250 So we specify name here and then the value of the name. 118 00:06:08,250 --> 00:06:11,000 And so that is of course this one. 119 00:06:11,000 --> 00:06:15,363 So let's grab that, paste it here and duplicate it. 120 00:06:16,870 --> 00:06:19,653 And next up is the email, okay. 121 00:06:20,690 --> 00:06:24,580 Then let's get rid of this enter into update settings. 122 00:06:24,580 --> 00:06:28,040 We then pass the form, okay. 123 00:06:28,040 --> 00:06:30,560 And or a text call using axios 124 00:06:30,560 --> 00:06:32,350 will then actually recognize this form 125 00:06:32,350 --> 00:06:34,480 here as an object and will work 126 00:06:34,480 --> 00:06:37,550 just the same as it did before, okay. 127 00:06:37,550 --> 00:06:39,900 So here in update settings where we pass 128 00:06:39,900 --> 00:06:42,178 in the data, which is then passed 129 00:06:42,178 --> 00:06:44,980 in here into the axios request, 130 00:06:44,980 --> 00:06:47,543 we do not need to change anything. 131 00:06:49,090 --> 00:06:51,810 All right, so this is equivalent 132 00:06:51,810 --> 00:06:54,380 to what we had before with name and email 133 00:06:54,380 --> 00:06:57,050 but now of course let's also add the photo 134 00:06:57,050 --> 00:06:59,380 which is the entire reason why we now 135 00:06:59,380 --> 00:07:00,580 have to do it like this. 136 00:07:02,590 --> 00:07:07,590 So form.append again then the name 137 00:07:07,650 --> 00:07:10,400 we want to give it is of course again, photo 138 00:07:12,093 --> 00:07:12,970 and then document 139 00:07:14,176 --> 00:07:17,860 .getelementbyid which is also photo 140 00:07:20,530 --> 00:07:22,930 but now it is not .value 141 00:07:22,930 --> 00:07:25,920 but instead .files, all right. 142 00:07:25,920 --> 00:07:28,170 And these files are actually in array 143 00:07:28,170 --> 00:07:30,260 and so since there's only one, 144 00:07:30,260 --> 00:07:33,260 we need to select that first element in the array 145 00:07:33,260 --> 00:07:34,733 and so that's zero. 146 00:07:36,880 --> 00:07:40,810 All right, and let's actually log this form to the console 147 00:07:40,810 --> 00:07:42,340 just 'til we get a quick look 148 00:07:43,360 --> 00:07:45,870 at what this form actually is. 149 00:07:45,870 --> 00:07:48,280 But in a nutshell, as I said before, 150 00:07:48,280 --> 00:07:52,480 we basically recreate this multi-part form data. 151 00:07:52,480 --> 00:07:55,200 And so that's actually why it's called form data 152 00:07:55,200 --> 00:07:58,640 is because, well, that form data is also here 153 00:07:58,640 --> 00:08:02,173 in this multi-part enc type, okay. 154 00:08:03,750 --> 00:08:06,450 So, I guess that is actually enough 155 00:08:06,450 --> 00:08:08,670 for us to now try this out. 156 00:08:08,670 --> 00:08:10,860 So as I said, in update settings, 157 00:08:10,860 --> 00:08:13,030 there's nothing that we need to change 158 00:08:13,030 --> 00:08:15,320 and also the update me endpoint 159 00:08:15,320 --> 00:08:18,630 where we are submitting this request tool 160 00:08:18,630 --> 00:08:21,040 so this one has also already working 161 00:08:21,040 --> 00:08:25,230 and ready to accept images and even to resize them, right. 162 00:08:25,230 --> 00:08:28,319 And so let's now go ahead and try this. 163 00:08:28,319 --> 00:08:32,049 And so let's reload this one more time. 164 00:08:32,049 --> 00:08:36,030 And so let's see, and indeed we now get 165 00:08:36,030 --> 00:08:38,450 our file picker basically. 166 00:08:38,450 --> 00:08:40,549 So this window where we can now select 167 00:08:40,549 --> 00:08:42,370 the file and what I'm going to do 168 00:08:42,370 --> 00:08:45,620 is to basically put back the original image 169 00:08:45,620 --> 00:08:47,730 that we had on this user. 170 00:08:47,730 --> 00:08:52,513 So that's on desktop, natours, public, image 171 00:08:54,060 --> 00:08:58,700 users, and it was user 11, so this one. 172 00:08:58,700 --> 00:09:00,050 And so that's now uploaded. 173 00:09:01,940 --> 00:09:06,940 So open, save to settings, and data update is successfully. 174 00:09:07,780 --> 00:09:10,180 Now it doesn't reflect here immediately. 175 00:09:10,180 --> 00:09:13,280 Neither here nor up here but it should 176 00:09:13,280 --> 00:09:15,393 so once we upload this page. 177 00:09:16,410 --> 00:09:19,540 And we could indeed also do it with java script 178 00:09:19,540 --> 00:09:21,620 but that's actually a lot of work. 179 00:09:21,620 --> 00:09:23,740 I'd tried to do it and I did it 180 00:09:23,740 --> 00:09:26,800 but then I thought that it's just too much work 181 00:09:26,800 --> 00:09:29,630 and not worth to implement it here. 182 00:09:29,630 --> 00:09:32,040 But anyway just to test if it actually worked, 183 00:09:32,040 --> 00:09:34,320 we need to now reload the page. 184 00:09:34,320 --> 00:09:35,840 And it did. 185 00:09:35,840 --> 00:09:39,320 Here is now the new image that we just uploaded. 186 00:09:39,320 --> 00:09:41,450 So, great. 187 00:09:41,450 --> 00:09:44,210 Let's take a look at the folder itself. 188 00:09:44,210 --> 00:09:46,530 If it's actually there, also, and if 189 00:09:46,530 --> 00:09:48,810 it was correctly transformed. 190 00:09:48,810 --> 00:09:52,030 So that's an image. 191 00:09:52,030 --> 00:09:53,293 Let's reload it here. 192 00:09:57,240 --> 00:09:59,663 And so now I'm not sure which one it is. 193 00:10:00,890 --> 00:10:02,690 Ah, exactly. 194 00:10:02,690 --> 00:10:07,200 So 500 times 500 and now that it's completely blurred 195 00:10:07,200 --> 00:10:10,440 because the original image was a lot smaller. 196 00:10:10,440 --> 00:10:12,643 But nevermind, that doesn't matter at all. 197 00:10:13,910 --> 00:10:17,570 What matters is that we can now actually upload photos 198 00:10:17,570 --> 00:10:19,830 right from this form. 199 00:10:19,830 --> 00:10:22,480 I want that's all to take a look at our console here 200 00:10:22,480 --> 00:10:27,480 at that form data that I thought that we had logged 201 00:10:27,546 --> 00:10:29,530 and it didn't appear here 202 00:10:29,530 --> 00:10:32,184 because we already reloaded the page. 203 00:10:32,184 --> 00:10:36,543 But anyway, I wanted to put the other image back here. 204 00:10:39,290 --> 00:10:41,820 So the one that we actually uploaded before 205 00:10:41,820 --> 00:10:46,820 which is in dev-data, image, and aarav. 206 00:10:50,040 --> 00:10:53,340 All right, data updated successfully. 207 00:10:53,340 --> 00:10:56,760 Let's just quickly take a look at our phone data here. 208 00:10:56,760 --> 00:11:00,173 Ah, but I guess we cannot really see what we have here. 209 00:11:01,100 --> 00:11:02,223 Let's see. 210 00:11:04,045 --> 00:11:06,689 Nah, we cannot really see what we have. 211 00:11:06,689 --> 00:11:09,160 Okay, so I never took a look at this. 212 00:11:09,160 --> 00:11:10,110 And I thought we could maybe 213 00:11:10,110 --> 00:11:12,850 see the information but nevermind. 214 00:11:12,850 --> 00:11:16,170 What matters is that it actually worked. 215 00:11:16,170 --> 00:11:18,191 So, if we reload now, then of course 216 00:11:18,191 --> 00:11:21,940 this older image is back again. 217 00:11:21,940 --> 00:11:25,000 Awesome, so once more, this application 218 00:11:25,000 --> 00:11:28,583 is really starting to feel more and more real work like. 16725

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.