Heim >Backend-Entwicklung >PHP-Tutorial >Ausführliche Erklärung, wie PHP aktiviert wird, um das Herunterladen von Breakpoint-Lebensläufen zu implementieren

Ausführliche Erklärung, wie PHP aktiviert wird, um das Herunterladen von Breakpoint-Lebensläufen zu implementieren

*文
*文Original
2018-01-03 09:15:232234Durchsuche

Wie aktiviere ich PHP, um den Download von einem Haltepunkt aus fortzusetzen? Vereinfacht gesagt geht es darum, den Bereich der vom Benutzer angeforderten Datei über diese Variable $_SERVER['HTTP_RANGE'] abzurufen, und dann steuert das Programm die Ausgabe der Datei. Beispielsweise reicht die erste Anfrage für eine Datei von 0 bis 999 Byte, die zweite Anfrage von 1000 bis 1999 Byte usw. Jedes Mal, wenn 1000 Byte Inhalt angefordert werden, ruft das Programm den entsprechenden Dateispeicherort über fseek ab Funktion. Dann Ausgabe. Ich hoffe, es hilft allen.

$fname = './05e58c19552bb26b158f6621a6650899'; 
$fp = fopen($fname,'rb'); 
$fsize = filesize($fname); 
if (isset($_SERVER[&#39;HTTP_RANGE&#39;]) && ($_SERVER[&#39;HTTP_RANGE&#39;] != "") && preg_match("/^bytes=([0-9]+)-$/i", $_SERVER[&#39;HTTP_RANGE&#39;], $match) && ($match[1] < $fsize)) { 
$start = $match[1]; 
} else { 
$start = 0; 
} 
@header("Cache-control: public"); 
@header("Pragma: public"); 
if ($start > 0) { 
fseek($fp, $start); 
Header("HTTP/1.1 206 Partial Content"); 
Header("Content-Length: " . ($fsize - $start)); 
Header("Content-Ranges: bytes" . $start . "-" . ($fsize - 1) . "/" . $fsize); 
} else { 
header("Content-Length: $fsize"); 
Header("Accept-Ranges: bytes"); 
} 
@header("Content-Type: application/octet-stream"); 
@header("Content-Disposition: attachment;filename=1.rm"); 
fpassthru($fp);

Sie können sich auch ansehen, wie die Datei attachment.php von Discuz! die Wiederaufnahme des Haltepunkts implementiert. Bitte schauen Sie sich den Code an:

ruft auch den vom Benutzer angeforderten Dateibereich über $_SERVER['HTTP_RANGE'] ab. Weitere Informationen finden Sie in der Quellcodeanalyse. Hier versuche ich nur, ein paar neue Ideen anzulocken.

$range = 0; 
if($readmod == 4) { 
dheader(&#39;Accept-Ranges: bytes&#39;); 
if(!emptyempty($_SERVER[&#39;HTTP_RANGE&#39;])) { 
list($range) = explode(&#39;-&#39;,(str_replace(&#39;bytes=&#39;, &#39;&#39;, $_SERVER[&#39;HTTP_RANGE&#39;]))); 
$rangesize = ($filesize - $range) > 0 ? ($filesize - $range) : 0; 
dheader(&#39;Content-Length: &#39;.$rangesize); 
dheader(&#39;HTTP/1.1 206 Partial Content&#39;); 
dheader(&#39;Content-Range: bytes=&#39;.$range.&#39;-&#39;.($filesize-1).&#39;/&#39;.($filesize)); 
} 
}

Verwandte Empfehlungen:

Der perfekte Implementierungscode der PHP-Download-Funktion

Detaillierte Erläuterung der Methoden zum Lesen von PHP-Dateien

PHP-Datei-Caching-Funktion

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung, wie PHP aktiviert wird, um das Herunterladen von Breakpoint-Lebensläufen zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn