Ich habe das schon eine Weile recherchiert und habe dafür keine Antwort gefunden.PHP cURL senden und empfangen Bilder Client/Server
Ich habe eine Client-Site, die Aufrufe an unseren API-Server tätigt. Was möchte ich ein Bild an die Client-Site übertragen, wenn ein spezieller Anruf getätigt wird.
Ich habe Code, der das Bild vom Server herunterlädt, aber dies veranlasst uns, mehrere Aufrufe zu machen, die uns zwingen, all diese Bilder auf dem Server zu erstellen, die wir nicht behalten wollen, selbst wenn wir sie später löschen .
$originalFileUrl = createImage('createImage', $fileName);
downloadImage($originalFileUrl, $fileDestination);
deleteFileFromServer('deleteImage', $fileName);
function serverCall ($action, $fileName) {
$serverCall = $SERVER.'/api.php?fileName=' . $fileName . '&action=' . $action;
ob_start();
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $serverCall);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_exec($ch);
$fileContents = ob_get_contents();
curl_close($ch);
ob_end_clean();
return $fileContents;
}
function downloadImage ($originalFileUrl, $fileDestination) {
// Starting output buffering
ob_start();
// create a new CURL resource
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, $originalFileUrl);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// set timeouts
set_time_limit(30); // set time in secods for PHP
curl_setopt($ch, CURLOPT_TIMEOUT, 30); // and also for CURL
// open a stream for writing
$outFile = fopen($fileDestination, 'wb');
curl_setopt($ch, CURLOPT_FILE, $outFile);
// grab file from URL
curl_exec($ch);
fclose($outFile);
// close CURL resource, and free up system resources
curl_close($ch);
ob_end_clean();
}
Wo $ originalFileUrl den aktuellen Speicherort der Datei ist, und fileDestination $ ist der Weg, wo ich meine neue Datei sein wollen.
Meine Frage ist: Kann ich einen Aufruf an eine PHP-Datei auf dem Server, die verantwortlich für erstellen, übertragen und löschen Sie das Bild alle in einem Anruf, anstatt mehrere Anrufe zu machen?
Auch aus mehreren Gründen ftp die Datei vom Server zum Client ist keine gute Option.
Vielen Dank