ホームページ バックエンド開発 PHPチュートリアル readfile バイナリ (画像) ファイル ヘッダーには 1 つの余分なビット (0x0A) が含まれます。

readfile バイナリ (画像) ファイル ヘッダーには 1 つの余分なビット (0x0A) が含まれます。

Jun 13, 2016 pm 01:46 PM
content file header quot

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

紅夢ネイティブアプリケーションのランダムな詩 紅夢ネイティブアプリケーションのランダムな詩 Feb 19, 2024 pm 01:36 PM

オープン ソースの詳細については、次のサイトを参照してください。 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のFile.length()関数を使用してファイルのサイズを取得します。 Jul 24, 2023 am 08:36 AM

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

PHP BLOBをファイルに変換する方法 PHP BLOBをファイルに変換する方法 Mar 16, 2023 am 10:47 AM

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

JavaのFile.renameTo()関数を使用してファイルの名前を変更する JavaのFile.renameTo()関数を使用してファイルの名前を変更する Jul 25, 2023 pm 03:45 PM

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

SpringBoot はどのように Feign 呼び出しを通じてヘッダー内のパラメーターを渡しますか? SpringBoot はどのように Feign 呼び出しを通じてヘッダー内のパラメーターを渡しますか? May 16, 2023 pm 08:38 PM

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

Linuxヘッダーとはどういう意味ですか? Linuxヘッダーとはどういう意味ですか? Jul 18, 2023 pm 03:34 PM

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

JavaのFile.getParent()関数を使用してファイルの親パスを取得します。 JavaのFile.getParent()関数を使用してファイルの親パスを取得します。 Jul 24, 2023 pm 01:40 PM

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

JavaのFile.getParentFile()関数を使用してファイルの親ディレクトリを取得します。 JavaのFile.getParentFile()関数を使用してファイルの親ディレクトリを取得します。 Jul 27, 2023 am 11:45 AM

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

See all articles