Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiel für das Herunterladen einer großen Remote-Datei durch PHP (Ermitteln der Remote-Dateigröße)

Beispiel für das Herunterladen einer großen Remote-Datei durch PHP (Ermitteln der Remote-Dateigröße)

微波
微波Original
2017-06-28 11:50:321590Durchsuche

Der folgende Editor zeigt Ihnen ein Beispiel für das Herunterladen einer großen Remote-Datei in PHP (Erhalten der Größe der Remote-Datei). Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Editor, um einen Blick darauf zu werfen

Kein Unsinn mehr, gehen Sie einfach zum Code

<?php
  // 暂不支持断点续传
  // $url = &#39;http://www.mytest.com/debian.iso&#39;; 不知道为何获取本地文件大小为0
  $url = &#39;http://192.168.8.93/download/vm-672/18/0.vmdk&#39;;
  $file = basename($url);
  $header = get_headers($url, 1);
  $size = $header[&#39;Content-Length&#39;];

  $fp = fopen($url, &#39;rb&#39;);
  if ($fp === false) exit(&#39;文件不存在或打开失败&#39;);

  header(&#39;Content-Description: File Transfer&#39;);
  header(&#39;Content-Type: application/octet-stream&#39;);
  header(&#39;Content-Disposition: attachment; filename="&#39;.$file.&#39;"&#39;);
  header(&#39;Content-Transfer-Encoding: binary&#39;);
  header(&#39;Expires: 0&#39;);
  header(&#39;Cache-Control: must-revalidate, post-check=0, pre-check=0&#39;);
  header(&#39;Pragma: public&#39;);
  header(&#39;Content-Length: &#39; . $size);

  ob_clean();
  ob_end_flush();
  set_time_limit(0);
  
  $chunkSize = 1024 * 1024;
  while (!feof($fp)) {
    $buffer = fread($fp, $chunkSize);
    echo $buffer;
    ob_flush();
    flush();
  }
  fclose($fp);
  exit;


Das obige ist der detaillierte Inhalt vonBeispiel für das Herunterladen einer großen Remote-Datei durch PHP (Ermitteln der Remote-Dateigröße). 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