readfile バイナリ (画像) ファイル ヘッダーには 1 つの余分なビット (0x0A) が含まれます。
readfile バイナリ (画像) ファイル ヘッダーには追加のビット (0x0A) が含まれます。
皆さん、こんにちは。私たちのプロジェクトはかなり厄介な問題に遭遇しました。 readfile を使用して画像ファイルをダウンロードする場合、ファイルの先頭に以前より 1 桁 (0x0A) が追加されます。UEdit を使用してファイルの先頭の 16 進数を削除すると、ファイルを正しく読み取ることができます。
ソースコードは次のとおりです:
- PHP コード
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> <?php $file = 'test_img.bmp'; if (file_exists($file)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file); exit; } ?>
ダウンロードしたファイルは次のように元のファイルと比較されます:
以前のサーバーではコードの実行に問題はありませんでしたが、プロジェクトのオペレーティング サポート環境が変更されたとき (オペレーティング システム/Apache/php のバージョンが異なる場合があります)、すべてのコードをチェックしました。ドキュメントはオンラインにありません。この問題の解決を手伝ってください。よろしくお願いします。
有効な解決策があれば、さらに 200 ポイントが与えられます。
-----解決策---------
- PHP コード
//段落を与えます //$mime、ファイルタイプ //$filename、言うまでもなく //$data は出力したいファイルデータです。file_get_contents を使用して取得してください。 if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE") !== FALSE) { header('Content-Type: "'.$mime.'"'); header('Content-Disposition:attachment; filename="'.$filename.'"'); header('有効期限: 0'); header('キャッシュ制御: 必須再検証、事後チェック = 0、事前チェック = 0'); header("コンテンツ転送エンコーディング: バイナリ"); header('プラグマ: public'); header("Content-Length: ".strlen($data)); } それ以外 { header('Content-Type: "'.$mime.'"'); header('Content-Disposition:attachment; filename="'.$filename.'"'); header("コンテンツ転送エンコーディング: バイナリ"); header('有効期限: 0'); header('プラグマ: キャッシュなし'); header("Content-Length: ".strlen($data)); } 終了($data); <br><font color="#e78608">------解決策------------------</font><br> コードをテストしたところ、指摘された問題は発生しませんでした。 <br><br> ob_clean();<br> flash();<br><br>これら 2 つの文を削除して見てください。 <br><font color="#e78608">------解決策------------------</font><br> このコード行の前に、文字が出力されているかどうかを確認してください。 ? <br><font color="#e78608">------解決策------------------</font><br> 余分な改行文字を追加してください、、、投稿されたコードは本番環境のコードではありませんよね? <br><font color="#e78608">------解決策------------------</font><br> ソース コードは次のとおりです。 <br><br>[code=PHP]<br><br><?php<br>$file = 'test_img.bmp';<br><br>明らかに、< ?php の前に空行があります<br>さらに悪いことに、BOM ヘッダーさえ避けていないことです<div class="clear"></div>

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









オープン ソースの詳細については、次のサイトを参照してください。 51CTO Honmeng 開発者コミュニティ https://ost.51cto.com 実行環境 DAYU200:4.0.10.16SDK: 4.0.10.15IDE: 4.0.600 1. アプリケーションを作成するには、[ファイル] をクリックします。 >新しいファイル ->プロジェクトの作成。テンプレートを選択します: [OpenHarmony] EmptyAbility: プロジェクト名 shici、アプリケーション パッケージ名 com.nut.shici、およびアプリケーションの保存場所 XXX (中国語、特殊文字、スペースは含まれません) を入力します。 CompileSDK10、モデル: ステージ。デバイス

ファイルのサイズを取得するには、Java の File.length() 関数を使用します。ファイル操作を扱うとき、ファイル サイズは非常に一般的な要件です。Java では、ファイルのサイズを取得するための非常に便利な方法、つまり length( ) File クラスのメソッド。この記事では、このメソッドを使用してファイルのサイズを取得する方法と、対応するコード例を紹介します。まず、サイズを取得したいファイルを表す File オブジェクトを作成する必要があります。 File オブジェクトを作成する方法は次のとおりです: Filef

PHP BLOB をファイルに変換する方法: 1. PHP サンプル ファイルを作成します; 2. 「function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' })」を通じて} 」メソッドを使用して、Blob をファイルに変換できます。

Java の File.renameTo() 関数を使用してファイルの名前を変更する Java プログラミングでは、ファイルの名前を変更する必要がよくあります。 Java には、ファイル操作を処理するための File クラスが用意されており、その renameTo() 関数でファイルの名前を簡単に変更できます。この記事では、Java の File.renameTo() 関数を使用してファイルの名前を変更する方法と、対応するコード例を紹介します。 File.renameTo() 関数は、File クラスのメソッドです。

[SpringBoot] Feign 呼び出しを介してヘッダーのパラメーターを渡す Feign を介してヘッダー パラメーターを渡す方法 問題の説明 Feign を使用して Spring Cloud の別のサービスの API インターフェイスをリクエストする場合、ヘッダーでパラメーターを渡す必要があります。特別な処理が行われると、ヘッダー内のパラメータが失われます。解決策 1: @RequestHeader(name="headerName") を介して渡します。例: Feign は次のように定義されます @FeignClient(name="service-name")pub

Linux ヘッダーは、コンテンツに関するメタデータを含めるために使用されるファイルまたはデータ ストリームの先頭を指します。ヘッダー ファイルを正しく記述して使用することで、開発者はシステム リソースをより有効に活用し、コードの可読性と保守性を向上させることができます。

ファイルの親パスを取得するには、Java の File.getParent() 関数を使用します Java プログラミングでは、ファイルやフォルダーを操作する必要がよくあります。場合によっては、ファイルの親パス、つまりファイルが存在するフォルダーのパスを取得する必要があることがあります。 Java の File クラスには、ファイルまたはフォルダーの親パスを取得する getParent() メソッドが用意されています。 File クラスは、ファイルとフォルダーを Java で抽象表現したもので、ファイルとフォルダーを操作するための一連のメソッドを提供します。その中で、手に入れてください

ファイルの親ディレクトリを取得するには、Java の File.getParentFile() 関数を使用します Java プログラミングでは、ファイルやフォルダーを操作する必要がよくあります。ファイルの親ディレクトリを取得する必要がある場合は、Java が提供する File.getParentFile() 関数を使用できます。この記事では、この関数の使用方法とコード例を説明します。 Java の File クラスは、ファイルやフォルダーを操作するために使用される主なクラスです。ファイルのプロパティを取得および操作するための多くのメソッドを提供します
