באג בהעתקת קובץ ממערכת למערכת
-
מאחר והמודול של @121244 לא תמיד עובד כי יש לו בעיות בשרת
פנה אלי מישהו בבקשה לפתח מודול כזה
אז פיתחתי מודול כזה
שאמור לשמש כהטמעה בהשמעת קבצים במקרה שok==ok ואם לא אז כשלוחה בפני עצמה
משום התשובה היא{"responseStatus":"ERROR","message":"path is invalid","messageCode":110,"yemotAPIVersion":6,"success":false}
הקוד
<?php $what=$GET['what']; $pass1=$_GET['pass1']; $ApiDID=$_GET['ApiDID']; $pass2=$_GET['pass2']; $did2=$_GET['did2']; $did1=$_GET['did1']; $path01=$_GET['path01']; $path02=$_GET['path02']; $what0=$GET['what0']; $ok=$_GET['ok']; $what=$GET['what']; if($ok=='ok'){ if($pass1==null){print"read=t-הקש את הסיסמה הראשונה.=pass1,yes,,,,No,";exit();} elseif($did2==null){print"read=t-הקש את המספר השני.=did2,yes,,,,No,";exit();} elseif($pass2==null){print"read=t-הקש את הסיסמה השניה.=pass2,yes,,,,No,";exit();} elseif($path02==null){print"read=t-הקש את שלוחת היעד.=path02,,,,,No,";exit();} // כתובת ה-URL של הקובץ שברצונך להעלות $file = "https://www.call2all.co.il/ym/api/DownloadFile?token=$ApiDID:$pass1&path={$what}"; // כתובת ה-API של ימות המשיח להעלאת קבצים $YemotUrl = "https://www.call2all.co.il/ym/api/UploadFile?token=$did2:$pass2&path=ivr2:$path02&convertAudio=0&autoNumbering=true&tts=0&"; //$YemotUrl = urlencode($YemotUrl); //$file = urlencode($file); // הגדרת כותרות לבקשת ה-CURL (כאן, מציינים שמדובר בנתוני טופס שמכילים קבצים) $headers = array( 'Content-type: multipart/form-data' ); // שמירת תוכן הקובץ מה-URL לקובץ זמני במערכת בשם "file.wav" file_put_contents("file.wav", file_get_contents($file,true)); $target = new CURLFile("file.wav", 'media/wav'); $parm['upload'] = $target; // אתחול משאב ה-CURL לביצוע בקשת HTTP $curl = curl_init(); // הגדרת מאפייני ה-CURL לביצוע הבקשה (כולל URL, פרמטרים, כותרות וכו') curl_setopt_array( $curl, array( CURLOPT_URL => $YemotUrl, // הגדרת כתובת ה-API שאליה תישלח הבקשה CURLOPT_POST => true, // הגדרת הבקשה כ-POST (שולחת נתונים) CURLOPT_POSTFIELDS => $parm, // שליחת מערך הפרמטרים (כולל הקובץ) CURLOPT_HTTPHEADER => $headers, // הגדרת הכותרות לבקשה CURLOPT_RETURNTRANSFER => true, // קבלת תגובת השרת בחזרה ) ); // ביצוע הבקשה ושמירת תגובת השרת במשתנה $response $response = curl_exec($curl); // קבלת קוד הסטטוס של הבקשה (לדוגמה, 200 אם הצליח) $status = curl_getinfo($curl, CURLINFO_HTTP_CODE); // סגירת משאב ה-CURL כדי לשחרר זיכרון curl_close($curl); // הדפסת תגובת השרת echo "$response";} else{ if($did1==null){print"read=t-הקש את המספר הראשון.=did1,yes,,,,No,";exit();} elseif($pass1==null){print"read=t-הקש את הסיסמה הראשונה.=pass1,yes,,,,No,";exit();} elseif($path01==null){print"read=t-הקש את השלוחה ממנה יקח את הקובץ ובסיום הקש סולמית.=path01,,,,,No,";exit();} elseif($what0==null){print"read=t-הקש את מספר הקובץ אותו יעתיק.=what0,,,,,No,";exit();} elseif($did2==null){print"read=t-הקש את המספר השני.=did2,yes,,,,No,";exit();} elseif($pass2==null){print"read=t-הקש את הסיסמה השניה.=pass2,yes,,,,No,";exit();} elseif($path02==null){print"read=t-הקש את שלוחת היעד.=path02,,,,,No,";exit();} // כתובת ה-URL של הקובץ שברצונך להעלות $file = "https://www.call2all.co.il/ym/api/DownloadFile?token=$did1:$pass1&path=ivr2:$path01"; // כתובת ה-API של ימות המשיח להעלאת קבצים $YemotUrl = "https://www.call2all.co.il/ym/api/UploadFile?token=$did2:$pass2&path=ivr2:$path=$path02&convertAudio=0&autoNumbering=true&tts=0&"; //$YemotUrl = urlencode($YemotUrl); //$file = urlencode($file); // הגדרת כותרות לבקשת ה-CURL (כאן, מציינים שמדובר בנתוני טופס שמכילים קבצים) $headers = array( 'Content-type: multipart/form-data' ); // שמירת תוכן הקובץ מה-URL לקובץ זמני במערכת בשם "file.wav" file_put_contents("file.wav", file_get_contents($file,true)); // יצירת אובייקט CURLFile לייצוג הקובץ שיועלה לשרת, עם סוג MIME המתאים $target = new CURLFile("file.wav", 'media/wav'); // הוספת הקובץ למערך הפרמטרים שישלח בבקשת ה-CURL $parm['upload'] = $target; // אתחול משאב ה-CURL לביצוע בקשת HTTP $curl = curl_init(); // הגדרת מאפייני ה-CURL לביצוע הבקשה (כולל URL, פרמטרים, כותרות וכו') curl_setopt_array( $curl, array( CURLOPT_URL => $YemotUrl, // הגדרת כתובת ה-API שאליה תישלח הבקשה CURLOPT_POST => true, // הגדרת הבקשה כ-POST (שולחת נתונים) CURLOPT_POSTFIELDS => $parm, // שליחת מערך הפרמטרים (כולל הקובץ) CURLOPT_HTTPHEADER => $headers, // הגדרת הכותרות לבקשה CURLOPT_RETURNTRANSFER => true, // קבלת תגובת השרת בחזרה ) ); // ביצוע הבקשה ושמירת תגובת השרת במשתנה $response $response = curl_exec($curl); // קבלת קוד הסטטוס של הבקשה (לדוגמה, 200 אם הצליח) $status = curl_getinfo($curl, CURLINFO_HTTP_CODE); // סגירת משאב ה-CURL כדי לשחרר זיכרון curl_close($curl); // הדפסת תגובת השרת echo $response; } ?>
-
@ivrפון כתב בבאג בהעתקת קובץ ממערכת למערכת:
path is invalid
כתוב לך...
תוסיף הדפסה למשתנה path02 ונראה מה הבעיה..
-
@אביי-ורבא עשיתי כבר הדפסה לשתי הכתובות
ראשונה
https://www.call2all.co.il/ym/api/DownloadFile?token=token&path=
שניה
https://www.call2all.co.il/ym/api/UploadFile?token=token&path=ivr2:1&convertAudio=0&autoNumbering=true&tts=0&
ומה שמוזר שבראשון אין אחרי הpath כלום
אבל ההדפסה של השגיאה היא מההעלאה -
@ivrפון השגיאה הזו אאל"ט מגיעה כשפרמטר הpath חסר או לא תקין בהעלאת קובץ,
כדי לנסות להבין מה לא תקיו, ביקשתי שתביא דוגמה לתוכן המשתנה שורה לפני שאתה כולל אותו בURL.. -
@אביי-ורבא הנה הבאתי לך דוגמה לפנית API מהקוד הזה
בתוכו יש את path=ivr2:1 זה דוגמה משימוש
הוספתי הדפסה של כתובות הURL שפונה אלהם -
@ivrפון תנסה לשלוח עם נתיב מלא כולל שם קובץ וסיומת, ותבדוק האם זה כן עובד