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
-
יש מישהו? תודה מראשש
-
@eliyahu יכול אולי לעזור? תודה גדולה מראש
-
@Freund באיזו שפה את כותבת?
-
@אופיר multipart/form-data אבל לא ברור לי בדיוק איזה פרמטרים צריך לשלוח.... ובינתיים שום קריאה לא הצליחה
-
@Freund תוסיפי בתחילת הPOST:
Content-Disposition: form-data; name="file"; filename=
ושם הקובץ עם גרשיים. מעבר שורה ו:
Content-Type: application/octet-stream
מעבר שורה ותוכן הקובץ (ניסיתי עכשיו אצלי)
-
@אופיר תוכל לשלוח את כל הקריאה? לא הבנתי בדיוק ... אני שולחת דרך POWER AUTOMATE [ברעיון כמו MAKE] תודה רבה
-
@Freund כתב בUploadFile - העלאת קובץ בAPI:
POWER AUTOMATE
אני לא מכיר, אבל הנה הקוד ב-VBA. אפשר להעלות אותו ל-chatGPT ולבקש שיעשה לך את ההתאמה עבור הפלטפורמה הרצויה.
Sub SendFileViaPost() Dim http As Object Dim fileStream As Object Dim boundary As String Dim data As String Dim url As String Dim filePath As String Dim fileName As String Dim fileContent As String ' הגדרת כתובת ה-URL url = "https://call2all.co.il/ym/api/UploadFile?token=077**מערכת*:**סיסמה**&path=ivr2:002.wav" ' הגדרת נתיב הקובץ filePath = "C:\Users\User\Desktop\בין כוכבים.wav" fileName = "בין כוכבים.wav" ' קריאת תוכן הקובץ Set fileStream = CreateObject("ADODB.Stream") fileStream.Type = 1 ' adTypeBinary fileStream.Open fileStream.LoadFromFile filePath fileContent = fileStream.Read fileStream.Close Set fileStream = Nothing ' יצירת גבול multipart boundary = "------------------------" & Format(Now, "YYYYMMDDHHMMSS") ' יצירת תוכן הבקשה data = "--" & boundary & vbCrLf data = data & "Content-Disposition: form-data; name=""file""; filename=""" & fileName & """" & vbCrLf data = data & "Content-Type: application/octet-stream" & vbCrLf & vbCrLf data = data & fileContent & vbCrLf data = data & "--" & boundary & "--" ' יצירת אובייקט HTTP Set http = CreateObject("MSXML2.XMLHTTP") http.Open "POST", url, False http.setRequestHeader "Content-Type", "multipart/form-data; boundary=" & boundary ' שליחת הבקשה http.Send data ' בדיקת התשובה If http.Status = 200 Then MsgBox "ההעלאה הצליחה: " & http.responseText Else MsgBox "Failed to upload file. Status: " & http.Status & " - " & http.statusText End If ' שחרור אובייקט Set http = Nothing End Sub