-
@ayali אי אפשר לעזור ככה. זה לא משחק שאנחנו אוהבים לשחק, משחק הניחושים של "מה יכול להיות הבעיה?".
בלי קוד או תיאור של שגיאה או איזשהו רמז אחר זה פשוט בזבוז זמן. -
@ayali אני מבין שזה בהמשך לנושא אחר שפתחת, ושם הפנו אותך לסרטון הדרכה. האם אתם עובדים לפי הסרטון ההוא?
-
-
@yossiz כן הוא שווה ל__dirname
יש לי בעיה בקבלת הקובץ
אני מביאה אותו דרך formData אבל שאני מדפיסה את ה body הוא
אוביקט ריק -
כמה נקודות שצריך לשים לב להם:
א) multer הוא middleware. ולכן זה לא פוקציה שאתה קורא בעצמך. אלא זה שלב עיבוד שאתה מכניס לשרשרת המטפלים/מעבדים בבקשה. אקספרס כבר ידאוג לקרוא לו בשלב המתאים. לכן הורדתי את הקריאה הידנית לפונקציה ובמקום זה הוספתי אותו בקובץ routes.js.
ב) באקספרס זה עובד ככה, שה-body בברירת מחדל נשאר ריק (או בעצם לא קיימת -undefined
), וזה התפקיד של ה-middlewares לעבד את המידע ה"לא מבושלת" שה-body מכיל, ולהכניס את התוצאה ה"מבושלת" ל-req.body
.
ה-middleware של multer לוקח את הקובץ ומכניס אותו ל-req.file
- לא ל-req.body
. רק אם יש שדות נוספות ב-body הם יוכנסו ל-req.body
. אחרת ה-body נשאר ריק.
ג) כמו שאמרתי מקודם, שיניתי את המינימום כדי שהפרוייקט יעבוד. אני לא בטוח שעכשיו הכל מסודר בצורה מיטבית. אבל "תן ולחכם ויחכם עוד". -
כמה נקודות שצריך לשים לב להם:
א) multer הוא middleware. ולכן זה לא פוקציה שאתה קורא בעצמך. אלא זה שלב עיבוד שאתה מכניס לשרשרת המטפלים/מעבדים בבקשה. אקספרס כבר ידאוג לקרוא לו בשלב המתאים. לכן הורדתי את הקריאה הידנית לפונקציה ובמקום זה הוספתי אותו בקובץ routes.js.
ב) באקספרס זה עובד ככה, שה-body בברירת מחדל נשאר ריק (או בעצם לא קיימת -undefined
), וזה התפקיד של ה-middlewares לעבד את המידע ה"לא מבושלת" שה-body מכיל, ולהכניס את התוצאה ה"מבושלת" ל-req.body
.
ה-middleware של multer לוקח את הקובץ ומכניס אותו ל-req.file
- לא ל-req.body
. רק אם יש שדות נוספות ב-body הם יוכנסו ל-req.body
. אחרת ה-body נשאר ריק.
ג) כמו שאמרתי מקודם, שיניתי את המינימום כדי שהפרוייקט יעבוד. אני לא בטוח שעכשיו הכל מסודר בצורה מיטבית. אבל "תן ולחכם ויחכם עוד". -
כמה נקודות שצריך לשים לב להם:
א) multer הוא middleware. ולכן זה לא פוקציה שאתה קורא בעצמך. אלא זה שלב עיבוד שאתה מכניס לשרשרת המטפלים/מעבדים בבקשה. אקספרס כבר ידאוג לקרוא לו בשלב המתאים. לכן הורדתי את הקריאה הידנית לפונקציה ובמקום זה הוספתי אותו בקובץ routes.js.
ב) באקספרס זה עובד ככה, שה-body בברירת מחדל נשאר ריק (או בעצם לא קיימת -undefined
), וזה התפקיד של ה-middlewares לעבד את המידע ה"לא מבושלת" שה-body מכיל, ולהכניס את התוצאה ה"מבושלת" ל-req.body
.
ה-middleware של multer לוקח את הקובץ ומכניס אותו ל-req.file
- לא ל-req.body
. רק אם יש שדות נוספות ב-body הם יוכנסו ל-req.body
. אחרת ה-body נשאר ריק.
ג) כמו שאמרתי מקודם, שיניתי את המינימום כדי שהפרוייקט יעבוד. אני לא בטוח שעכשיו הכל מסודר בצורה מיטבית. אבל "תן ולחכם ויחכם עוד". -
כמה נקודות שצריך לשים לב להם:
א) multer הוא middleware. ולכן זה לא פוקציה שאתה קורא בעצמך. אלא זה שלב עיבוד שאתה מכניס לשרשרת המטפלים/מעבדים בבקשה. אקספרס כבר ידאוג לקרוא לו בשלב המתאים. לכן הורדתי את הקריאה הידנית לפונקציה ובמקום זה הוספתי אותו בקובץ routes.js.
ב) באקספרס זה עובד ככה, שה-body בברירת מחדל נשאר ריק (או בעצם לא קיימת -undefined
), וזה התפקיד של ה-middlewares לעבד את המידע ה"לא מבושלת" שה-body מכיל, ולהכניס את התוצאה ה"מבושלת" ל-req.body
.
ה-middleware של multer לוקח את הקובץ ומכניס אותו ל-req.file
- לא ל-req.body
. רק אם יש שדות נוספות ב-body הם יוכנסו ל-req.body
. אחרת ה-body נשאר ריק.
ג) כמו שאמרתי מקודם, שיניתי את המינימום כדי שהפרוייקט יעבוד. אני לא בטוח שעכשיו הכל מסודר בצורה מיטבית. אבל "תן ולחכם ויחכם עוד". -
@yossiz אמר בעזרה בהעלאת קבצים לשרת ב node js:
באקספרס זה עובד ככה, שה-body בברירת מחדל נשאר ריק (או בעצם לא קיימת - undefined)
רק אם זה נשלח כ form-data.
-
@ב-ל אתה שואל או קובע?
(נראה לי שאקפרס לא מפרסר שום body ישר מהקופסה. צריך להוסיף middleware של bodyparser) -
@yossiz אמר בעזרה בהעלאת קבצים לשרת ב node js:
(נראה לי שאקפרס לא מפרסר שום body ישר מהקופסה. צריך להוסיף middleware של bodyparser)
כיום זה מובנה באקספרס
-
@ב-ל
התיעוד אומר אחרתContains key-value pairs of data submitted in the request body. By default, it is undefined, and is populated when you use body-parsing middleware such as express.json() or express.urlencoded().
-
@ב-ל
התיעוד אומר אחרתContains key-value pairs of data submitted in the request body. By default, it is undefined, and is populated when you use body-parsing middleware such as express.json() or express.urlencoded().
-
@yossiz זה בדיוק מה שכתוב בתיעוד שלהם.
בשביל להבהיר את מה ש @ב-ל כתב, אקספרס עדיין לא מפרסר מהקופסה שום דבר. הדבר היחיד שהשתנה הוא שהמידלוורס של bodyparser מובנים באקספרס, ואין עניין להתקין שום מודול חיצוני בשביל זה. אני מצטט מהתיעוד:req.body
Contains key-value pairs of data submitted in the request body. By default, it is undefined, and is populated when you use body-parsing middleware such as express.json() or express.urlencoded().
המידלוורס החדשים שנוספו באקספרס 4 הם:
app.use(express.json()); // מפרסר application/json app.use(express.urlencoded()); // מפרסר application/x-www-form-urlencoded
-
@yossiz זה בדיוק מה שכתוב בתיעוד שלהם.
בשביל להבהיר את מה ש @ב-ל כתב, אקספרס עדיין לא מפרסר מהקופסה שום דבר. הדבר היחיד שהשתנה הוא שהמידלוורס של bodyparser מובנים באקספרס, ואין עניין להתקין שום מודול חיצוני בשביל זה. אני מצטט מהתיעוד:req.body
Contains key-value pairs of data submitted in the request body. By default, it is undefined, and is populated when you use body-parsing middleware such as express.json() or express.urlencoded().
המידלוורס החדשים שנוספו באקספרס 4 הם:
app.use(express.json()); // מפרסר application/json app.use(express.urlencoded()); // מפרסר application/x-www-form-urlencoded
@מוטי-אורן תודה רבה
לא שמתי לב למה שאני בעצמי ציטטתי -
D dovid העביר נושא זה מ-תכנות ב-