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

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

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

שליחהעל ידי מנחם מענדל מענדי » 15:07 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';
היא רק תוכן הקובץ אבל איפה שמו והמאפיינים שלו?
כנראה שבטעות הורדתי. בכל אופן אם צריך להחזיר אז להחזיר וכן אשמח שתעזור לי לפתור את העניין הזה של ההעלאה. השתגעתי כבר מזה

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

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

שליחהעל ידי מנחם מענדל מענדי » 15:12 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;
}
}
?>
זה השגיאה שהדף נתן לי
Parse error: syntax error, unexpected T_STRING, expecting T_FUNCTION in

ובשורה 21

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

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

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

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

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

<?php
include_once('0.php');
header('Content-Type: text/plain; charset=utf-8');


$url = "https://www.call2all.co.il/ym/api/UploadFile";

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

print_r($a);

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

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

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

@011371
@מאזין נלהב
@חוקר
יישר כח על כל העזרה :)
אשמח שתעזרו לי לגמור עם העניין הזה כי אני פשוט לא מצליח לעשות את זה.
תודה

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

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

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

גיליתי שחלק מהשיבושים זה שאני מעתיק את הקוד ישירות מכאן כולל הרווחים, וכשאני מוחק את הרווחים המיותרים אז זה עובד יותר טוב אבל עדיין יש שגיאות ועקבתי אחרי כל שגיאה וכל אחת שהיתה סימנתי ב//. אני מצרף לכאן את הקוד ואולי זה יעזור לשפוך אור על תעלומת ה phpleischer :lol:

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

<?php
header('Content-Type: text/html;charset=utf-8');
$con = new connecting_to_yemot_api('0722020200', '1234');

$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

שליחהעל ידי מנחם מענדל מענדי » 18:48 26/02/2018

אשמח מאד אם משהו יתפנה לעזור לי כי אני לא מצליח לבד וזה ממש קשה וכן זה מאד דחוף לי.
תודה


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

מי מחובר

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