ホームページ >バックエンド開発 >PHPの問題 >PHPダウンロードファイルの内容が文字化けしている場合の対処方法

PHPダウンロードファイルの内容が文字化けしている場合の対処方法

藏色散人
藏色散人オリジナル
2021-03-08 09:31:261710ブラウズ

PHP ダウンロード ファイルの内容が文字化けする場合の解決策: 1. 「ob_clean()」関数を使用して出力バッファの内容をクリアします; 2. 「flush()」関数を使用して PHP プログラムのバッファを更新します。

PHPダウンロードファイルの内容が文字化けしている場合の対処方法

#この記事の動作環境: Windows7 システム、PHP7.1、Dell G3 コンピューター。

php ファイルのダウンロード時にファイルの内容が文字化けしたり破損したりする問題の解決策

PHP プログラムを実行するときは、PHP を使用してファイルをダウンロードする必要があります

その後、コードをコピーして変更するだけです。

エフェクトも多数登場

ダウンロードをクリックして、ファイルのダウンロードが完了したと思ったのですが、画像を開いたところ、ファイルが破損しているというメッセージが表示されたので、ファイルのサイズを確認しました。 1KBくらいは多すぎる気がします。

PS を使用して開きます。破損しているというメッセージが表示されますが、画像は表示されます。

じゃあ、余分な1kbの問題だと思います。

次に、txt をアップロードしてダウンロードしました。

案の定、ファイルの前後にいくつかの余分な文字があることがわかりました。

その後、どうやって削除するかを考え、Baidu、Google、フォーラムなどに質問をしました。

1 時間以上検索して、ようやく解決策を見つけました。 [推奨: "PHP ビデオ チュートリアル "]

コードは次のとおりです

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);

  }
}

注意:

ob_clean();
flush();これが重要です。この2つの機能を使用したところ、正常に画像が開き、文字化けもせずに完了しました。

以上がPHPダウンロードファイルの内容が文字化けしている場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。