3 Stimmen

Bild nach php curl Übertragung FTP beschädigt

Ich verwende den folgenden Code, um ein Bild zu übertragen, und es funktioniert, aber das jpg ist nach der Übertragung beschädigt. Es sagt ungültiges Bildformat und zeigt ein unscharfes Bild.

Ich habe es mit normalem php ohne curl versucht und das gleiche Ergebnis erhalten.

Weiß jemand, warum alles, was ich versuche, funktioniert, aber das image.jpg beschädigt?

$curl = curl_init();
$fh   = fopen("test.jpg", 'w');
curl_setopt($curl, CURLOPT_URL, "ftp://{$serverInfo['user']}: {$servererInfo['password']}@{$serverInfo['ftp1.server.com']}/{$serverInfo['For_Web/Web Images/Full Size/00-99/file']}");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
fwrite($fh, $result);
fclose($fh);
curl_close($curl);`

3voto

Joachim Isaksson Punkte 170533

Es gibt ein paar Probleme;

Sie sollten Ihre Datei zum Schreiben im Binärmodus öffnen, das heißt;

$fh = fopen("test.jpg", 'wb');

curl_exec gibt ein bool (Erfolg) zurück, nicht den Inhalt der Datei. Die Datei sollte stattdessen an CURLOPT_FILE übergeben werden.

Sie sollten den Benutzernamen und das Kennwort mit CURLOPT_USERPWD festlegen. Ich bin mir nicht sicher, ob die URL-Methode auch funktionieren könnte.

Sie sollten CURLOPT_BINARYTRANSFER einstellen.

Arbeitsprobe;

$curl = curl_init();
$fh = fopen("fips.exe", 'wb');
curl_setopt($curl, CURLOPT_URL, 'ftp://ftp.sunet.se/pub/FreeBSD/tools/fips.exe');
curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FILE, $fh);
curl_setopt($curl, CURLOPT_USERPWD, 'anonymous:olle');
$result = curl_exec($curl);
fclose($fh);
curl_close($curl);

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