העלאת קבצים בapi של ימות בphp

מנחם מענדל מענדי
הודעות: 980
הצטרף: 16:42 28/04/2016

העלאת קבצים בapi של ימות בphp

שליחהעל ידי מנחם מענדל מענדי » 13:39 11/02/2018

https://www.call2all.co.il/ym/api/Uploa ... ivr/mm.ini
איך אני יכול להעלות בלינק הזה באמצעות php.

מנחם מענדל מענדי
הודעות: 980
הצטרף: 16:42 28/04/2016

Re: העלאת קבצים בapi של ימות בphp

שליחהעל ידי מנחם מענדל מענדי » 13:49 25/02/2018

לעת עתה ראיתי שזה פעיל רק עם מגדירים בhtml.
אין דרך לנסות להגדיר את זה בphp?זה דיי דחוף לי.

011371
הודעות: 997
הצטרף: 23:33 07/12/2017

Re: העלאת קבצים בapi של ימות בphp

שליחהעל ידי 011371 » 13:58 25/02/2018

לעת עתה ראיתי שזה פעיל רק עם מגדירים בhtml.
אין דרך לנסות להגדיר את זה בphp?זה דיי דחוף לי.
בדיוק בשביל זה "מאזין נלהב" פרסם מחלקה שלמה , עיין שם ותמצא נחת

מנחם מענדל מענדי
הודעות: 980
הצטרף: 16:42 28/04/2016

Re: העלאת קבצים בapi של ימות בphp

שליחהעל ידי מנחם מענדל מענדי » 14:01 25/02/2018

לעת עתה ראיתי שזה פעיל רק עם מגדירים בhtml.
אין דרך לנסות להגדיר את זה בphp?זה דיי דחוף לי.
בדיוק בשביל זה "מאזין נלהב" פרסם מחלקה שלמה , עיין שם ותמצא נחת
לצערי זה לא עובד לי בשרת החינמי של הוסטינגר.
ואולי הסיבה נובעת מעליונות הכתיבה שם כי יש הרבה קודים שהמערכת שלי לא מקבלת.
אם יש לך דרך לעזור לי, או לפחות לתת לי את הקודים המתאימים רק להעלות קובץ, אשמח מאד ואוכל אי"ה לצ'פר אותך.
תודה

מנחם מענדל מענדי
הודעות: 980
הצטרף: 16:42 28/04/2016

Re: העלאת קבצים בapi של ימות בphp

שליחהעל ידי מנחם מענדל מענדי » 14:52 25/02/2018

זה מה שניסיתי לעשות אבל ללא הצלחה. אשמח שתעזור לי בזה

קוד: בחירת הכל

<?php
$File = 'type=meunu';
$url = "https://www.call2all.co.il/ym/api/UploadFile?";

$body = array
(
'path' => 'ivr/ext.ini',
'convertAudio' => 0,
'fileUpload' => $File
);

$a = $con -> connecting('UploadFile', $body);


print_r($File);

011371
הודעות: 997
הצטרף: 23:33 07/12/2017

Re: העלאת קבצים בapi של ימות בphp

שליחהעל ידי 011371 » 14:57 25/02/2018

עושה רושם שאתה כבר כמה שבועות עוסק באיזה פיתוח מעניין,
אולי תפרט מה בדיוק אתה רוצה לעשות?
יכול להיות שאתה עמל לשווא לפלס לך דרך בשדה קוצים, במקום לצעוד בדרך הסלולה בשעה שיש קודים מוכנים לפעולה שאחרים כבר כתבו ויתכן שמוכנים לשתף

נ.ב. אם אתה מתכנן להשלים את הפרוייקט על שרת חינמי , קח בחשבון שזה ספק ברכה לבטלה , וכדאי שתשדרג
במחיר של 30 - 50 ₪ לחודש אתה יכול למצוא שרתי אחסון של חברות גדולות ומהימנות המספיקים די והותר לפרוייקטים מסוג זה

מנחם מענדל מענדי
הודעות: 980
הצטרף: 16:42 28/04/2016

Re: העלאת קבצים בapi של ימות בphp

שליחהעל ידי מנחם מענדל מענדי » 15:00 25/02/2018

עושה רושם שאתה כבר כמה שבועות עוסק באיזה פיתוח מעניין,
אולי תפרט מה בדיוק אתה רוצה לעשות?
יכול להיות שאתה עמל לשווא לפלס לך דרך בשדה קוצים, במקום לצעוד בדרך הסלולה בשעה שיש קודים מוכנים לפעולה שאחרים כבר כתבו ויתכן שמוכנים לשתף

נ.ב. אם אתה מתכנן להשלים את הפרוייקט על שרת חינמי , קח בחשבון שזה ספק ברכה לבטלה , וכדאי שתשדרג
במחיר של 30 - 50 ₪ לחודש אתה יכול למצוא שרתי אחסון של חברות גדולות ומהימנות המספיקים די והותר לפרוייקטים מסוג זה
אני עושה הכל בהתנדבות לעילוי נשמת סבי ולכן אין לי מאיפה להשקיע.
אשמח אם תעזור לי במה שיש לי.

011371
הודעות: 997
הצטרף: 23:33 07/12/2017

Re: העלאת קבצים בapi של ימות בphp

שליחהעל ידי 011371 » 15:02 25/02/2018

זה מה שניסיתי לעשות אבל ללא הצלחה. אשמח שתעזור לי בזה

קוד: בחירת הכל

<?php
$File = 'type=meunu';
$url = "https://www.call2all.co.il/ym/api/UploadFile?";

$body = array
(
'path' => 'ivr/ext.ini',
'convertAudio' => 0,
'fileUpload' => $File
);

$a = $con -> connecting('UploadFile', $body);


print_r($File);
אני לא רואה את הקובץ שאותו אתה מנסה להעלות
יש מחלקה בפני העצמה האחראית ליצירת הקובץ
השורה:

קוד: בחירת הכל

$File = 'type=meunu';
היא רק תוכן הקובץ אבל איפה שמו והמאפיינים שלו?

מאזין נלהב
הודעות: 368
הצטרף: 00:01 29/07/2016
מיקום: ארץ ישראל

Re: העלאת קבצים בapi של ימות בphp

שליחהעל ידי מאזין נלהב » 15:04 25/02/2018

נסה את זה

קוד: בחירת הכל

<?php

$con = new connecting_to_yemot_api('0773137770', '0000');

$File = new oFile('ext.ini', 'text/plain', 'type=menu');

$body = array
(
'path' => 'ivr/ext.ini',
'convertAudio' => 0,
'fileUpload' => $File
);

$a = $con -> connecting('UploadFile', $body);

print_r($a);

class BodyPost
{
// part "multipart/form-data"
public static function PartPost($name, $val)
{
$body = 'Content-Disposition: form-data; name="' . $name . '"';
// check instance of oFile
if($val instanceof oFile)
{
$file = $val->Name();
$mime = $val->Mime();
$cont = $val->Content();

$body .= '; filename="' . $file . '"' . "\r\n";
$body .= 'Content-Type: ' . $mime ."\r\n\r\n";
$body .= $cont."\r\n";
} else $body .= "\r\n\r\n".$val."\r\n";
return $body;
}

public static function Get(array $post, $delimiter = '-------------0123456789')
{
if(is_array($post) && !empty($post))
{
$bool = true;
//foreach($post as $val) if($val instanceof oFile) {$bool = true; break; };
if($bool)
{
$ret = '';
foreach($post as $name=>$val)
$ret .= '--' . $delimiter. "\r\n". self::PartPost($name, $val);
$ret .= "--" . $delimiter . "--\r\n";
} else $ret = http_build_query($post);
} else throw new \Exception('Error input param!');
return $ret;
}
}

class oFile
{
private $name;
private $mime;
private $content;

public function __construct($name, $mime=null, $content=null)
{
if(is_null($content))
{
$info = pathinfo($name);
// check is exist and readable file
if(!empty($info['basename']) && is_readable($name))
{
$this->name = $info['basename'];
// get MIME
$this->mime = mime_content_type($name);
// load file
$content = file_get_contents($name);
if($content!==false)
{
$this->content = $content;
}
else
{
throw new Exception('Don`t get content - "'.$name.'"');
}
}
else
{
throw new Exception('Error param');
}
}
else
{
$this->name = $name;
if(is_null($mime)) $mime = mime_content_type($name);
$this->mime = $mime;
$this->content = $content;
};
}

public function Name() { return $this->name; }

public function Mime() { return $this->mime; }

public function Content() { return $this->content; }

}

class connecting_to_yemot_api
{
public $token;

const URL = 'https://www.call2all.co.il/ym/api/';

public function __construct($user_name, $password)
{
$body = array('username' => $user_name, 'password' => $password);

$body = http_build_query($body);

$opts = array('http' => array(

'method' => 'POST',

'header' => "Content-Type: application/x-www-form-urlencoded",

'content' => $body,

'follow_location' => false) );

$context = stream_context_create($opts);

$url = self::URL.'Login';

$result = file_get_contents($url, FALSE, $context);

$result = json_decode($result);

if($result -> responseStatus == 'OK')
{
$this -> token = $result -> token;

return TRUE;
}
else
{
throw new Exception('שם המשתמש או הסיסמא של המערכת שגויים');
}
}

public function __destruct()
{
$this -> connecting('Logout');
}

public function connecting($action, $body = array())
{
$delimiter = '----'.uniqid();

$body['token'] = $this -> token;

$body = BodyPost::Get($body, $delimiter);

$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-Type: multipart/form-data; boundary='.$delimiter,
'content' => $body,
'follow_location' => false
)
);
$context = stream_context_create($opts);

$url = self::URL.$action;

$result = file_get_contents($url, FALSE, $context);

$headers = $this -> parseHeaders($http_response_header);

if($headers['Content-Type'][0] == 'application/json')
{
return json_decode($result);
}
else
{
return $result;
}
}

private function parseHeaders($headers)
{
// פונקציה שמקבלת מערך של שורות הכותרות
// הפונקציה מפרקת את קבצי הקוקי לתת-מערך נפרד


// מערך הכותרות
$head = array();

foreach( $headers as $k=>$v )
{
$t = explode( ':', $v, 2 );

if( isset( $t[1] ) )
{
if($t[0] == 'Set-Cookie')
{
$CookiesArr = array();

$cookies = explode( ';', $t[1]);

foreach($cookies as $cookie)
{
$c = explode( '=', $cookie);

if( isset( $c[1] ) )
{
$CookiesArr[ trim($c[0]) ] = trim( $c[1] );
}
else
{
$CookiesArr[] = trim( $c[0] );
}
}

$head[ trim($t[0]) ] = $CookiesArr;
}
elseif($t[0] == 'Content-Type')
{
$arr = array();

$children = explode( ';', $t[1]);

foreach($children as $child)
{
$c = explode( '=', $child);

if( isset( $c[1] ) )
{
$arr[ trim($c[0]) ] = trim( $c[1] );
}
else
{
$arr[] = trim( $c[0] );
}
}

$head[ trim($t[0]) ] = $arr;
}
else
{
$head[ trim($t[0]) ] = trim( $t[1] );
}
}
else
{
$head[] = $v;
if( preg_match( "#HTTP/[0-9\.]+\s+([0-9]+)#",$v, $out ) )
{
$head['reponse_code'] = intval($out[1]);
}
}
}
return $head;
}
}
?>

מנחם מענדל מענדי
הודעות: 980
הצטרף: 16:42 28/04/2016

Re: העלאת קבצים בapi של ימות בphp

שליחהעל ידי מנחם מענדל מענדי » 15:06 25/02/2018

יש מצב להביא לי לכאן בתור קובץ מצורף?
נסה את זה

קוד: בחירת הכל

<?php

$con = new connecting_to_yemot_api('0773137770', '0000');

$File = new oFile('ext.ini', 'text/plain', 'type=menu');

$body = array
(
'path' => 'ivr/ext.ini',
'convertAudio' => 0,
'fileUpload' => $File
);

$a = $con -> connecting('UploadFile', $body);

print_r($a);

class BodyPost
{
// part "multipart/form-data"
public static function PartPost($name, $val)
{
$body = 'Content-Disposition: form-data; name="' . $name . '"';
// check instance of oFile
if($val instanceof oFile)
{
$file = $val->Name();
$mime = $val->Mime();
$cont = $val->Content();

$body .= '; filename="' . $file . '"' . "\r\n";
$body .= 'Content-Type: ' . $mime ."\r\n\r\n";
$body .= $cont."\r\n";
} else $body .= "\r\n\r\n".$val."\r\n";
return $body;
}

public static function Get(array $post, $delimiter = '-------------0123456789')
{
if(is_array($post) && !empty($post))
{
$bool = true;
//foreach($post as $val) if($val instanceof oFile) {$bool = true; break; };
if($bool)
{
$ret = '';
foreach($post as $name=>$val)
$ret .= '--' . $delimiter. "\r\n". self::PartPost($name, $val);
$ret .= "--" . $delimiter . "--\r\n";
} else $ret = http_build_query($post);
} else throw new \Exception('Error input param!');
return $ret;
}
}

class oFile
{
private $name;
private $mime;
private $content;

public function __construct($name, $mime=null, $content=null)
{
if(is_null($content))
{
$info = pathinfo($name);
// check is exist and readable file
if(!empty($info['basename']) && is_readable($name))
{
$this->name = $info['basename'];
// get MIME
$this->mime = mime_content_type($name);
// load file
$content = file_get_contents($name);
if($content!==false)
{
$this->content = $content;
}
else
{
throw new Exception('Don`t get content - "'.$name.'"');
}
}
else
{
throw new Exception('Error param');
}
}
else
{
$this->name = $name;
if(is_null($mime)) $mime = mime_content_type($name);
$this->mime = $mime;
$this->content = $content;
};
}

public function Name() { return $this->name; }

public function Mime() { return $this->mime; }

public function Content() { return $this->content; }

}

class connecting_to_yemot_api
{
public $token;

const URL = 'https://www.call2all.co.il/ym/api/';

public function __construct($user_name, $password)
{
$body = array('username' => $user_name, 'password' => $password);

$body = http_build_query($body);

$opts = array('http' => array(

'method' => 'POST',

'header' => "Content-Type: application/x-www-form-urlencoded",

'content' => $body,

'follow_location' => false) );

$context = stream_context_create($opts);

$url = self::URL.'Login';

$result = file_get_contents($url, FALSE, $context);

$result = json_decode($result);

if($result -> responseStatus == 'OK')
{
$this -> token = $result -> token;

return TRUE;
}
else
{
throw new Exception('שם המשתמש או הסיסמא של המערכת שגויים');
}
}

public function __destruct()
{
$this -> connecting('Logout');
}

public function connecting($action, $body = array())
{
$delimiter = '----'.uniqid();

$body['token'] = $this -> token;

$body = BodyPost::Get($body, $delimiter);

$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-Type: multipart/form-data; boundary='.$delimiter,
'content' => $body,
'follow_location' => false
)
);
$context = stream_context_create($opts);

$url = self::URL.$action;

$result = file_get_contents($url, FALSE, $context);

$headers = $this -> parseHeaders($http_response_header);

if($headers['Content-Type'][0] == 'application/json')
{
return json_decode($result);
}
else
{
return $result;
}
}

private function parseHeaders($headers)
{
// פונקציה שמקבלת מערך של שורות הכותרות
// הפונקציה מפרקת את קבצי הקוקי לתת-מערך נפרד


// מערך הכותרות
$head = array();

foreach( $headers as $k=>$v )
{
$t = explode( ':', $v, 2 );

if( isset( $t[1] ) )
{
if($t[0] == 'Set-Cookie')
{
$CookiesArr = array();

$cookies = explode( ';', $t[1]);

foreach($cookies as $cookie)
{
$c = explode( '=', $cookie);

if( isset( $c[1] ) )
{
$CookiesArr[ trim($c[0]) ] = trim( $c[1] );
}
else
{
$CookiesArr[] = trim( $c[0] );
}
}

$head[ trim($t[0]) ] = $CookiesArr;
}
elseif($t[0] == 'Content-Type')
{
$arr = array();

$children = explode( ';', $t[1]);

foreach($children as $child)
{
$c = explode( '=', $child);

if( isset( $c[1] ) )
{
$arr[ trim($c[0]) ] = trim( $c[1] );
}
else
{
$arr[] = trim( $c[0] );
}
}

$head[ trim($t[0]) ] = $arr;
}
else
{
$head[ trim($t[0]) ] = trim( $t[1] );
}
}
else
{
$head[] = $v;
if( preg_match( "#HTTP/[0-9\.]+\s+([0-9]+)#",$v, $out ) )
{
$head['reponse_code'] = intval($out[1]);
}
}
}
return $head;
}
}
?>


חזור אל “פורום מפתחים API”

מי מחובר

משתמשים הגולשים בפורום זה: אין משתמשים רשומים | 2 אורחים