PracticU

העלאת מספר רב של קבצים במכה אחת לאתר ב-NodeJS

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › העלאת מספר רב של קבצים במכה אחת לאתר ב-NodeJS
מילון מושגים:
Node.js - סביבת ריצה שמאפשרת להריץ קוד JavaScript מחוץ לדפדפן, בעיקר בצד השרת.
טופס - אזור בממשק שבו המשתמש מזין נתונים בשדות ושולח אותם, למשל טופס הרשמה או התחברות.
HTML - שפת הסימון שבה בונים את מבנה ותוכן דפי האינטרנט, באמצעות תגיות שמגדירות כותרות, פסקאות, קישורים ועוד.
POST - שיטת HTTP לשליחת נתונים לשרת כדי ליצור או לעדכן משאב, למשל שליחת טופס.
ראוט - הגדרה שמקשרת כתובת בקשה לקוד שמטפל בה באפליקציה. גם מסלול שדרכו עוברות חבילות ברשת.
מאפיין - תכונה שמצמידים לרכיב ומתארת אותו או את התנהגותו, למשל מאפיין של תגית HTML או שדה באובייקט.
אופרטור - סימן בקוד שמבצע פעולה על ערכים, כמו חיבור, השוואה או פעולה לוגית.
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.

העלאת מספר רב של קבצים במכה אחת לאתר ב-NodeJS
אחרי שהעלאת קובץ בודד כבר עובדת, ההרצאה מראה איך לתת למשתמש לבחור כמה תמונות בבת אחת ולטפל בהן בשרת, גם כשנבחר קובץ אחד בלבד.
השלבים העיקריים
1. טופס עם בחירה מרובה: בדף ה-HTML שולחים ב-POST לראוט חדש, /uploadImages, בקידוד multipart/form-data. ל-input מסוג file נותנים שם חדש (myMultipleImages) ומוסיפים את המאפיין multiple.
2. ראוט חדש בשרת: מעתיקים את הראוט של העלאת תמונה בודדת ומשנים אותו ל-uploadImages. הודעת השגיאה משתנה ל"לא נשלחה תמונה או תמונות", כי המשתמש יכול לשלוח אחת או יותר.
3. בדיקת מה מגיע ב-request.files: כשנבחר קובץ אחד, הערך של myMultipleImages הוא אובייקט. כשנבחרו כמה, הערך הוא מערך, גם אם בטופס הוגדר multiple בשני המקרים.
4. איחוד למערך: משתמשים ב-Array.isArray עם אופרטור טרינרי. אם זה כבר מערך לוקחים אותו כמו שהוא, ואם זה אובייקט בודד עוטפים אותו במערך. אחרי השורה הזו files הוא תמיד מערך.
5. לולאה על הקבצים: עוברים עם for (const file of files) ועל כל קובץ מבצעים את אותן פעולות כמו בהעלאה הבודדת: לקיחת הסיומת המקורית ושמירה בתיקיית uploads עם שם ייחודי והסיומת.
6. בדיקה: מרוקנים את תיקיית uploads, מעלים שלוש תמונות ורואים שלושה קבצים עם שמות ייחודיים. אחר כך מעלים תמונה אחת ורואים שהיא נוספה.
שימו לב
המשתמש יכול לבחור קובץ אחד גם כשהאפשרות לבחור כמה פתוחה, ולכן הקוד חייב לטפל בשני המקרים.
עכשיו אפשר לקבל בשרת העלאה של תמונה בודדת או של סדרת תמונות באותו ראוט.
השיעור הבא בקורס: סטרימינג של סרט מאתר ב-NodeJS

פרקי ההרצאה: העלאת מספר רב של קבצים במכה אחת לאתר ב-NodeJS

  1. 00:00

    מעבר מתמונה אחת לסדרת קבצים

  2. 00:46

    שדה קבצים עם המאפיין multiple

  3. 01:31

    ראוט upload images בשרת

  4. 02:20

    הדפסת request.files לקונסול

  5. 03:35

    אובייקט בודד לעומת מערך

  6. 04:30

    טיפול בקובץ אחד או בכמה

תמלול ההרצאה: העלאת מספר רב של קבצים במכה אחת לאתר ב-NodeJS

הטקסט המלא של הדקות הראשונות בהרצאה «העלאת מספר רב של קבצים במכה אחת לאתר ב-NodeJS» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:03

    אז אחרי שראינו איך אנחנו יכולים להעלות לשרת קובץ תמונה אחת, אנחנו רוצים לראות איך אפשר להעלות סדרה של קבצים בבת אחת.

  2. 00:16

    בואו ניקח רגע את כל הקוד הזה של ה-HTML, Upload Several Images, נשנה את זה ל-Upload Several Images. וקודם כל, למה בעצם? אולי אתם רוצים לאפשר ליוזר להעלות סדרה של תמונות, סדרה של קבצים, סדרה של מסמכים בבת אחת.

  3. 00:35

    אתם לא רוצים שהוא יבחר אחד אחד. יש לנו כאן במקום גלישה ל-Route Upload Image בואו נגלוש ל-Upload Images. גם כן פוסט, תמיכה בקבצים, מולטי פרטפורם דאטה, יש לנו input type file, יש לנו name שהוא בעצם הגיוני שהוא יהיה שם אחר, בואו נקרא לו multiple images ושוב אנחנו רוצים לטפל רק בתמונות.

  4. 01:12

    בכדי שהתיבה הזאת תוכל לתת לנו סדרה של קבצים, אז אנחנו צריכים להגדיר לה מלטיפל, דבר כזה. המאפיין הזה מגדיר סדרה של קבצים. אז מה אנחנו צריכים לעשות בצד של השרת בשביל לתמוך בזה?

  5. 01:31

    ראשית, אנחנו צריכים לבנות את הראוט הזה, Upload Images. בואו נעבור לכאן, נעתיק את כל הראוט הראשון ונשנה Upload Images. זה ממש שני ראוטים שונים, אולי הם מאוד דומים מבחינת השם, אבל הם כמובן שונים.

  6. 01:47

    נשנה את זה no image or images sent. כלומר, היוזר לא חייב לשלוח הרבה תמונות, הוא יכול לשלוח רק תמונה אחת או יותר. אז אמרנו לו, לא נשלחה שום תמונה ובטח שלא הרבה תמונות, מה אנחנו רוצים לעשות?

  7. 02:10

    דבר ראשון, אין לנו פה פייל בודד, יש לנו פה סדרה של files. אבל בואו רגע נוריד את זה ונדפיס את request.files.

  8. 02:32

    ואמרנו שזה נקרא, בואו נעתיק אפילו את ה-Name שלו, My Multiple Images, ואני רוצה לראות מה זה מכיל הדבר הזה כשאני מציג אותו על הקונסול.

  9. 02:46

    בואו נפתח טרמינל, נריץ, נגלוש, אפשר לסגור את הטרמינל, ונבחר תמונה אחת, רק את הבאניז, אופן, נסתכל רגע למה סגרתי את הטרמינל, נסתכל על הטרמינל, אוי, לא לחצתי על Upload, נסתכל על הטרמינל ונראה שהוא נותן לי אובייקט,

  10. 03:19

    שלאובייקט יש name ואת הדאטה, את הגודל שלו וכולי. בסדר, זה מעניין. עכשיו, שימו לב שהוא מסתיים פה, אני רוצה לבצע את אותו הדבר, בואו נחזור מרפרש, אבל נבחר את שלושת התמונות ואנחנו רואים פה three files, upload, אני רוצה לראות מה יש על הקונסול אבל אין פה אובייקט,

  11. 03:52

    יש פה מערך וזה יכול טיפה לבלבל. אם אנחנו בחרנו פריט בודד אז הערך הוא אובייקט יחיד, הערך של my multiple images בלי קשר ל-v שהגדרנו פה מלטיפל.

  12. 04:10

    מבחינת המערכת זה אובייקט בודד. אם אנחנו בחרנו סדרה של קבצים, אז מבחינת המערכת ה-value my multiple images שרואים אותו פה הוא מערך. אז תזכרו, אני לא יודע מה יוזר הולך לבחור, אולי הוא רוצה לבחור רק קובץ אחד, אפילו שיש לו את היכולת לבחור הרבה קבצים.

  13. 04:34

    לכן בואו ניקח const files ונכניס לתוכו את הבדיקה הרי, זה ב-JavaScript בודק האם משהו הוא מארח או לא מארח. request files my multiple images זה בעצם היה השם.

לקורס המלא: קורס NodeJS אונליין בעברית

ההרצאה הקודמת: העלאת תמונה בודדת upload לאתר ב-NodeJS

ההרצאה הבאה: סטרימינג של סרט מאתר ב-NodeJS

הרצאות קשורות מקורסים אחרים

  • העלאת קבצים עם Powershell
  • טריגר רק על עמודה אחת
  • העלאת הרשאות בלינוקס על ידי ניצול באגים בהרשאות על קבצים - SUID
  • קבצים - Files - חלק 1

קורסים נוספים במסלול

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס ריאקט - React