2 Stimmen

Wie kann ich eine Datei an einen REST-Server POSTen, ohne die Datei mit PHP auf die Festplatte zu schreiben?

Ich versuche, eine XML-Datei an einen Server als Teil der POST-Methode für eine interne API zu senden.

Die gesamte PHP-Dokumentation weist auf die Verwendung von $postVars['file']='@/path/to/file.xml' hin, um die Datei tatsächlich zu senden.

Ich möchte die Datei aus einer Zeichenfolge senden, aber sie muss trotzdem als Dateiupload und nicht als Zeichenfolge gesendet werden.

Hilfe?

3voto

Allain Lalonde Punkte 88365

Werfen Sie einen Blick auf diesen Thread, der sich mit dem befasst, was Sie tun wollen, denke ich: http://www.webmasterworld.com/php/3164561.htm

Der letzte Eintrag könnte hilfreich sein (von mir umformatiert):

function do_post_request($url, $data, $optional_headers = null) { 
  $params = array('http' => array( 
    'method' => 'post', 
    'content' => $data 
  )); 

  if ($optional_headers!== null) 
    $params['http']['header'] = $optional_headers; 

  $ctx = stream_context_create($params); 
  $fp = @fopen($url, 'rb', false, $ctx); 
  if (!$fp)
    throw new Exception("Problem with $url, $php_errormsg"); 

  $response = @stream_get_contents($fp); 
  if ($response === false) 
    throw new Exception("Problem reading data from $url, $php_errormsg"); 

  return $response; 
}

Grundsätzlich besteht die Lösung darin, die in php eingebaute Stream-Verarbeitung für Urls zu nutzen.

0voto

BYK Punkte 1350

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X