js kombiniert mit PHP zur Implementierung der Download-Funktion
Serverseitig
Der Schritt besteht darin Legen Sie die Parameter der Header-Datei fest, lesen Sie dann die Datei ein und geben Sie sie aus. File_get_contents im folgenden Code kann durch fread und fclose ersetzt werden.
download.php
<?php $filename = $_GET['filename']; $path = __DIR__."/file/".$filename; header( "Content-type: application/octet-stream"); header( "Accept-Ranges: bytes "); header( "Accept-Length: " .filesize($filename)); header( "Content-Disposition: attachment; filename={$filename}"); echo file_get_contents($filename);
Client
In vielen Fällen laden wir Dateien herunter, indem wir direkt auf die Frontend-Seite „Herunterladen“ klicken. anstatt speziell zur download.php oben zu springen, um sie herunterzuladen.
Daher müssen wir einen aktualisierungsfreien Zugriff auf download.php im Frontend implementieren, um Dateien herunterzuladen. Dies ist eine gute Möglichkeit, dies über einen versteckten Iframe zu erreichen. Das Folgende ist der Code:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <a href="javascript:download_file('http://localhost/download.php?filename=\" rel="external nofollow" 测试文件.doc\"')">下载</a> <script type="text/javascript"> function download_file(url) { if (typeof (download_file.iframe) == "undefined") { var iframe = document.createElement("iframe"); download_file.iframe = iframe; document.body.appendChild(download_file.iframe); } //alert(download_file.iframe); download_file.iframe.src = url; download_file.iframe.style.display = "none"; } </script> </body> </html>
file_get_contents wird zuerst gelesen und dann zurückgegeben. Sie können stattdessen die Funktion readfile verwenden, die effizienter ist.
Das obige ist der detaillierte Inhalt vonjs php implementiert die aktualisierungsfreie Download-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!