2017-06-23 2 views
0

Die Remote-Datei ist ein Anhang, und ich kann die Header, aber ich kann nicht erhalten die Datei oder den Inhalt davon.Kann keine Remote-Datei auf den Server herunterladen

Also, wenn ich einen dieser Codes verwenden, ist die Ausgabe nichts, und die erstellte Datei auf meinem Webserver ist leer. Die Datei: http://www.dev-c.com/nativedb/reference.html

+0

Was ist das Problem? Ist die Datei leer? –

+0

@RaviGehlot es funktioniert nicht ohne http: // – Dreadzone

+0

Ist die Datei leer? –

Antwort

1

Vielen Dank für die Hilfe, aber das Problem war mit der Codierung. Ich musste den Header "Accept-Encoding: gzip" senden und dann die Ausgabe gzdecode.

<?php 
error_reporting(E_ALL); 

$url = 'http://www.dev-c.com/nativedb/reference.html'; 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $url); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_BINARYTRANSFER, true); 
curl_setopt($curl, CURLOPT_HEADER, false); 
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
"Host: www.dev-c.com", 
"Accept-Encoding: gzip" 
)); 

$data = curl_exec($curl); 

curl_close($curl); 

echo gzdecode($data); 
?> 
+0

Gotcha. Ich wollte Sie bitten, gzip auf dem Server zu deaktivieren. Aber guter Fang. –

0

Ich zog die Header für die Web-URL, die Sie mit Ihrem Beispiel zur Verfügung gestellt. Das ist, was ich habe:

HTTP/1.1 200 OK Server: nginx/1.12.0 Date: Fri, 23 Jun 2017 11:34:58 GMT Content-Type: application/octet-stream **Content-Length: 0** Connection: keep-alive Content-Description: reference.html Content-Disposition: attachment; filename=reference.html Content-Transfer-Encoding: binary Expires: Thu Jun 22 11:34:58 2017 GMT Cache-Control: must-revalidate Pragma: public Set-Cookie: PHPSESSID=f9d4eb515eeabfb461a11d056fdc7b78; path=/ Cache-Control: max-age=3600, private, proxy-revalidate

Wie Sie sehen können, Content-Length: 0 ist gleich Null. Das könnte einer der Gründe sein, warum du einen leeren Körper bekommst.

Wenn Sie Zugriff auf den NGINX-Server haben, auf dem reference.html installiert ist, können Sie versuchen, den Inhalt von /var/log/nginx/error.log zu sichern, wenn Sie versuchen, reference.html herunterzuladen.

Wenn Content-Length gleich null ist, wird keine Dateigröße heruntergeladen. Es weist darauf hin, dass es sich um ein Problem bei der Serverkonfiguration handelt.

+0

Warum kann ich dann über Browser herunterladen? Ich denke, es gibt kein Problem mit Nginx. – Dreadzone

+0

Wenn Sie AC haben Auf den Server können Sie eine kleine Datei (zB test.txt) legen. So etwas wie eine Textdatei mit nur einer kleinen Zeichenfolge wie "Hello World". Kann das mit Ihrem PHP-Skript heruntergeladen werden? Manchmal macht NGINX größere Dateien kaputt. –

Verwandte Themen