2017-08-09 5 views
0

Ich versuche, einen einfachen Downloader zu machen: Ich benutze ein PHP-Skript, um Inhalt von einer URL herunterzuladen, die Sie als Parameter übergeben können. Um einen versteckten iframe in meinem Haupt-Seite zum Download Ich benutze:Download mit Curl lädt die Seite

<iframe id="downloader"></iframe> 

ich die URL übergeben, die sie als GET-Parameter mit diesem heruntergeladen werden muss JS-Code:

function download(download) { 
    $('#downloader').attr('src', 'Downloader.php?download='+download); 
} 

das PHP-Skript innerhalb Downloader.php sieht wie folgt aus:

$download = $_GET['download']; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_URL, $download); 
curl_setopt($ch, CURLOPT_MAXREDIRS, 10); 
$data = curl_exec($ch); 
curl_close($ch); 

//Check if $data is false --> Error 

header('Content-Disposition: attachment; filename="'.$download.'"',true); 
header('Expires: 0',true); 
echo $data; 

Nun ist die eigentliche „Problem“: Wenn es herunterlädt, die Seite ändert seine Favicon auf ein sich drehendes Symbol, nehme ich es weil ich das DOM ändere. Gibt es eine Möglichkeit, die ich mit iframe herunterladen kann, aber ohne dieses Lade-Symbol oder muss ich auf andere Weise herunterladen?

+0

Darf ich fragen, was Sie erreichen möchten? Dies könnte komplett mit Javascript erfolgen ... Und/oder ohne iframe mit einem einfachen location.href – Salketer

Antwort

1

Der Ladevorgang wird ausgeführt, wenn der Browser Daten für die Anzeige der Seite abruft. Dies kann bedeuten, dass ein Bild heruntergeladen wird oder die Seite selbst, ihre CSS- oder JavaScript-Dateien angezeigt werden.

Dasselbe passiert, wenn ein IFrame verwendet wird, der Inhalt des Frames heruntergeladen wird, zeigt der Browser das Lade-Spinner an. Die einzige Möglichkeit zu vermeiden, den Spinner beim Herunterladen von etwas zu zeigen, das mir bewusst ist, ist Ajax zu verwenden.