שגיאה בהעלאת טקסט לקובץ בימות המשיח
-
בס"ד
שלום וברכה,
מנסה להעלאות טקסט לקובץ בימות המשיח, משתמש בפונקציה UploadTextFile
ב node.js + axios
הכל עובד טוב, כלומר מעדכן את הקובץ
אבל לא מוריד שורה. איפה שמסומן ב '\n'
מישהו מכיר את הבעיה?
מצו"ב הקוד:var axios = require('axios'); const token='0731234567:999999'; const path='ivr2:2/IdListMessage.ini'; const strData = `0541234567=f-001,g-/6\n0541234123=f-001,g-/6`; const url = `https://www.call2all.co.il/ym/api/UploadTextFile?token=${token}&what=${path}&contents=${strData}`; axios({url,method: 'POST'}) .then((response)=> { console.log(JSON.stringify(response.data)); }) .catch( (error) => { console.log(error); }); -
תנסה לשים ב שורה 6 גרשיים ולא גרש
-
yossizהשיב לivrtikshoret ב 11 באוג׳ 2024, 12:33 נערך לאחרונה על ידי yossiz 8 בנוב׳ 2024, 12:34
@ivrtikshoret כתב בשגיאה בהעלאת טקסט לקובץ בימות המשיח:
תנסה לשים ב שורה 6 גרשיים ולא גרש
רק למען הדיוק: ההבדל לא בין גרש לגרשיים אלא בין backtick (תו זה: `) לגרש/גרשיים (
"
/'
)
אין שום הבדל בין גרש לגרשיים ב-JS -
אופסס... טעיתי.
במושכל ראשון חשבתי שבטח הבעיה היא שיש backtick במקום גרש
אבל אחרי בדיקה אני רואה שגם ב-template string (מחרוזת בתוך backtick-ים) אמור לעבוד\n
במקום ירידת שורה
אז כנראה שיש הסבר אחר למה לא עובד עבור @avi-rz
אולי צריך לעשות urlencode למחרוזת לפני ההעברה ל-axiosעריכה: אכן זו ההסבר, axios מוריד ירידות שורה. צריך קודם לעשות encodeURI על המחרוזת ואז להעביר ל-axios
-
יש פה משהו מעניין
למרות שכאשר מעבירים מחרוזת ל-fetch (או ל-axios) הם עושים עליו encodeURI אוטומטי, אבל במקרה של ירידת שורה הם מורידים אותו
נסיתי קצת להתחקות אחרי המקור להתנהגות זו
מצאתי פהRemove all ASCII tab or newline from input.
עיין גם https://security.stackexchange.com/questions/234662/
-
@yossiz @צדיק-תמים
תודה רבה! הפתרון שניסיתי להכניס את הפרמטרים בנפרד ולא ב url עבד! -
צדיק תמיםהשיב לavi rz ב 11 באוג׳ 2024, 20:24 נערך לאחרונה על ידי צדיק תמים 8 בנוב׳ 2024, 20:24
אגב @avi-rz אני אוהב להחדיר את הטוקן בצורה שקופה, משהו כזה:
const axios = require('axios'); const axiosInstance = axios.create({ baseURL: 'https://www.call2all.co.il/ym/api/' }); const token = '0731234567:999999'; axiosInstance.interceptors.request.use((config) => { config.params = config.params || {}; config.params.token = token; return config; }); await axiosInstance.post('UploadTextFile', null, { params: { what: 'ivr2:2/IdListMessage.ini', contents: '0541234567=f-001,g-/6\n0541234123=f-001,g-/6' } }); אפשר להרחיב את הinterceptors הרבה יותר:
- לטפל גם בבקשות שהמידע בbody ולא כparams
- להוסיף לוג אוטומטי של הבקשה והתשובה
- לזרוק שגיאה כאשר התשובה של ימות היא שהיתה שגיאה (כי הם מחזירים תמיד HTTP STATUS 200...)
ועוד ועוד.
פוסט 1 מתוך 8