UploadFile - העלאת קובץ בAPI
-
שלום לכולם,
מנסה להבין מהדקומנטציה איך להעלות קובץ לשלוחה ללא הצלחה
https://f2.freeivr.co.il/topic/55/api-גישת-מפתחים-למערכות/10
מדובר בקובץ לא גדול - איך מעלים את הנתונים של הקובץ עצמו ? אני רואה פרטים מלאים על הקובץ רק בפיצול קובץ (כשמדובר על קובץ גדול) , בנוסף לא מכירה את שפת multipart/form-data אם מישהו יכול להעלות דוגמא לקריאה - יעזור לי מאד מאד!
תודה רבה מראש
-
@Freund נתוני הקובץ בגוף הPOST
-
@Freund
@amp-Software-0 כתב באיך מעלים קובץ שמע בAPI עם הפונקציה של שמואל?:ערכתי את הקוד של @שמואל לשימוש ציבורי
זה הקוד
function uploadFile($isPrivate, $token ,$path ,$file){ if ($isPrivate) { $YemotUrl = 'https://private.call2all.co.il/ym/api/'; } else { $YemotUrl = 'https://www.call2all.co.il/ym/api/'; } $headers = array( 'Content-type: multipart/form-data' ); $url = $YemotUrl . 'UploadFile'; $target = new CURLFile($file,'media/wav'); $parm['upload'] = $target; $parm['token'] = $token; $parm['path'] = $path . '/' . $target->getFilename(); $curl = curl_init(); curl_setopt_array( $curl, array( CURLOPT_URL => $url, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $parm, CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true, ) ); $response = curl_exec($curl); $status = curl_getinfo($curl, CURLINFO_HTTP_CODE); curl_close($curl); $response = json_decode($response, true); return $response;}
צריך לשלוח 4 פרמטרים isPrivate - ערך בוליאני אם המערכת בשרת פרייבט, token, path, ו- file - שם הקובץ להעלאה
דוגמא
uploadFile(false,'0773137770:2580','ivr2:/1','M1024.wav');בדוגמא הקובץ נמצא באותה תיקיה של קובץ ה php, במידה והקובץ להעלאה נמצא בתיקיה משנית (הנקראת לדגומא subFolder) יש להזין כך:
uploadFile(false,'0773137770:2580','ivr2:/1','subFolder/M1024.wav');הפונקציה מחזירה אובייקט json עם נתוני הפעולה, ניתן לקבל אותו גם כסטרינג כמובן
-
@Freund כתב בUploadFile - העלאת קובץ בAPI:
בנוסף לא מכירה את שפת multipart/form-data
multipart/form-data זו לא שפה זו צורת קידוד נתונים (משמשת בעיקר להגשת טפסים ב-POST)
-
אני ממש לא בקיאה בכלל בPHP מעלה את הנתונים מהדקומנטציה . מי שיוכל לפענח לי את השלבים לביצוע יעזור לי מאדדדד:
כל השלבים האלו ברורים לי:
token טוקן
path נתיב להעלאה
convertAudio המרת הקובץ
autoNumbering
ttsמהשלבים הבאים לא ממש הבנתי מה אמורים לעשות...
פיצול קובץ לחלקים נפרדים והעלאה לשרת
שלב א' - העלאת הקבצים....היכן אני מכניסה את התוכן של הקובץ (content) בקובץ רגיל ולא כבד מהמותר?
אם הבנתי נכון מ@eliyahu כל הההמשך רלוונטי רק לקבצים כבדים בשאלה דומה ששאלתי כאן...
תודה גדולה מראש!
-
@Freund לא שאני כ"כ מומחה, אבל השתמשתי כמה פעמים בAPI להעלאת קבצים ומה שצריך זה:
- לקרוא את תוכן הקובץ (הפקודה הזו קיימת בכל שפה). הקריאה בעצם הופכת את הקובץ למחרוזת בינארית.
- להכניס את המחרוזת הזו לגוף הPOST.
- את כל הפרמטרים (token וכו') לשרשר בURL
אם מדובר בטקסט בלבד יותר קל להשתמש ב-UploadTextFile -
@אופיר תודה על התגובה! מה השם של המפתח כשמעלים את התוכן של הקובץ?
ואם יש מצב לצילומסך / העתקה של קריאה לדוגמא יעזור לי מאד. תודה ! -
@Freund בלי מפתח
רק לא לשכוח לציין בכותרת multipart/form-dataיש לי דוגמה בVBA לא נראה לי שיעזור לך -
@אופיר זה כל הBODY בעצם?
-
@Freund כן
אשמח לדעת אם הסתדרת -
@אופיר לא הסתדרתי. לא הבנתי איזה פרמטרים בדיוק משרשרים בURL.. תודה!
-
@Freund
token path וכו'
לדוגמה:https://www.call2all.co.il/ym/api/UploadFile?token=077266666666:123546&path=ivr2:4/000.wav
-
@אופיר עדיין מקבלת הודעת שגיאה:
{
"responseStatus": "ERROR",
"message": "System error",
"messageCode": 105,
"yemotAPIVersion": 6,
"success": false
}
זה הURL ששלחתי:
https://www.call2all.co.il/ym/api/UploadFile?token=0231313XX:XXXX&path=ivr2:/100/000.wavעם כותרתContent-Type multipart/form-data
ובbody את הcontent שהתקבל מget file content