Heim  >  Artikel  >  Backend-Entwicklung  >  Was tun, wenn der Inhalt der PHP-Downloaddatei verstümmelt ist?

Was tun, wenn der Inhalt der PHP-Downloaddatei verstümmelt ist?

藏色散人
藏色散人Original
2021-03-08 09:31:261666Durchsuche

Lösung für den verstümmelten Inhalt der PHP-Download-Datei: 1. Löschen Sie den Inhalt des Ausgabepuffers mit der Funktion „ob_clean()“. 2. Aktualisieren Sie den Puffer des PHP-Programms mit der Funktion „flush()“.

Was tun, wenn der Inhalt der PHP-Downloaddatei verstümmelt ist?

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP7.1, Dell G3-Computer.

php-Datei herunterladen Die Lösung für den verstümmelten und beschädigten Inhalt der heruntergeladenen Datei

Wenn Sie ein PHP-Programm erstellen, müssen Sie PHP zum Herunterladen von Dateien verwenden

Dann machen Sie es einfach, kopieren Sie den Code und ändern Sie ihn.

Es sind auch viele Effekte aufgetreten

Nachdem ich auf „Herunterladen“ geklickt hatte, dachte ich, dass der Dateidownload abgeschlossen sei. Als das Bild geöffnet wurde, zeigte sich, dass die Datei beschädigt war, also beobachtete ich die Dateigröße. Es scheint etwa 1 KB zu viel zu sein.

Öffnen Sie es in PS, nun, es zeigt Schäden, aber das Bild kann herauskommen.

Dann denke ich, dass es das Problem der zusätzlichen 1 KB ist.

Dann habe ich eine TXT-Datei hochgeladen und dann heruntergeladen.

Tatsächlich habe ich festgestellt, dass vorne und hinten in der Datei ein paar zusätzliche Zeichen waren.

Dann habe ich darüber nachgedacht, wie ich es entfernen kann.

Nach mehr als einer Stunde Suche habe ich endlich die Lösung gefunden " 】

Der Code lautet wie folgt

public function download()
{
  $upload=M('upload');
  $data=$upload->find($_GET['id']);

  if(empty($data)){
    header('HTTP/1.0 404 Not Found');
    header('Location: .');
  }else{

  $path='./public/Uploads/'.$data['savename'];

  header("Content-Type:".$data['type']);

  header('Content-Disposition: attachment; filename="'.$data['name'].'"');

  header('Content-Length:'.$data['size']);

  ob_clean();
  flush();

  readfile($path);

  }
}

Hinweis:

ob_clean();

flush(); Dies ist der Schlüssel. Nach Verwendung dieser beiden Funktionen wurde das Bild normal geöffnet und der Text war nicht verstümmelt.

Das obige ist der detaillierte Inhalt vonWas tun, wenn der Inhalt der PHP-Downloaddatei verstümmelt ist?. 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