2014-03-03 21 views
12

Ich versuche, eine Datei von einer URL herunterzuladen, Wenn ich den Browser verwende, funktioniert der Download-Dialog, aber wenn ich diesen Code verwende, bleibt die neue Datei auf meinem Server leer.PHP CURL Datei herunterladen

$ch = curl_init(); 
$source = "https://myapps.gia.edu/ReportCheckPortal/downloadReport.do?reportNo=$row['certNo']&weight=$row['carat']"; 
curl_setopt($ch, CURLOPT_URL, $source); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$data = curl_exec ($ch); 
curl_close ($ch); 
$destination = "./files/certs/$row['certNo'].pdf"; 
$file = fopen($destination, "w+"); 
fputs($file, $data); 
fclose($file); 

Beispiel url: https://myapps.gia.edu/ReportCheckPortal/downloadReport.do?reportNo=1152872617&weight=1.35

+0

Sie benötigen Array Zugang zu wickeln in '{}' z.B. '" Text {$ array ['key']} "'. –

Antwort

21

Ich löste dieses Problem, das mit:

curl_setopt($ch, CURLOPT_SSLVERSION,3); 

Dies ist der letzte Code:

$source = "https://myapps.gia.edu/ReportCheckPortal/downloadReport.do?reportNo=1152872617&weight=1.35"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $source); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_SSLVERSION,3); 
$data = curl_exec ($ch); 
$error = curl_error($ch); 
curl_close ($ch); 

$destination = "./files/test.pdf"; 
$file = fopen($destination, "w+"); 
fputs($file, $data); 
fclose($file); 
+1

Dies funktionierte nicht für mich, endete mit dieser Lösung, die funktionierte: http://stackoverflow.com/questions/31107851/how-to-fix-curl-35-kann nicht kommunizieren-sicher-mit-Peer-no-common-encryptio –

1
  1. Haben Sie überprüfen, ob Ergebnisdaten tatsächlich enthält?
  2. mit fputs auf größere Dateien benötigen Sie Bytelänge
  3. Versuchen angeben file_put_contents($destination, $data);
+0

1. Echo auf $ Daten und es ist leer, ich weiß nicht warum. Haben Sie eine Idee, warum wenn ich den Browser verwende, bekomme ich einen Download-Dialog, aber damit funktioniert es nicht? – user3376311

+1

Sie werden über SSL angesprochen. Wenn Sie die Anmeldung für diese URL nicht angeben müssen, setzen Sie die CURL-Option CURLOPT_SSL_VERIFYPEER auf false. Überprüfen Sie auch, was der zurückgegebene Fehler mit $ error = curl_error ($ ch) ist; dann drucken Sie es aus –

+0

habe diesen Fehler: Unbekannter SSL-Protokollfehler in Verbindung mit myapps.gia.edu:443 – user3376311

2

Ihre URL mit https-Verbindung. Verwenden Sie auch die folgende Curl-Option.

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false); 
+0

hat diese Zeile hinzugefügt und folgende Fehlermeldung angezeigt: Unbekannter SSL-Protokollfehler in Verbindung mit myapps.gia.edu:443 – user3376311