0

次の問題は私が本当に頭を悩ませることができないので、本当にあなたたちがコード全体を提供することを気にすることができないなら、正しい方向に導くいくつかのヒントは素晴らしいでしょう!

そこで、ユーザーが画像をサーバーにアップロードできるスクリプトがあります。PHPは、ファイルの検証と、クライアントに認識されていない別のフォルダーに新しいファイル名を使用してファイルを保存します。これで、クライアントはアップロードされた画像をhtmlで簡単に表示できるようになります。

style="background-image:url('testimagegif.gif');

ただし、クライアントは、サーバーに保存されているイメージのパスやファイル名を認識できないようにすることが望ましいです。クライアントブラウザにファイルのダウンロードを強制するために使用することについては知ってheader('Content-type: ...いますが、これや同様のソリューションをこの場合にどのように適用できるかわかりません。同じことがreadfile。私がそれを使用する場合、ブラウザは単に画像をダウンロードし、htmlに配置しません。

4

4 に答える 4

2

ファイルを提供する場合は、ファイルをWebサーバー上の一般に読み取り可能なフォルダーに移動する必要があります。

それ以外の場合は、次のようなものが必要になりますreadfile()

于 2012-10-23T21:21:35.283 に答える
2

これには2つのオプションがあります。データプロトコルを使用して、画像全体を背景のURLに埋め込むか(画像が数kbより大きい場合はお勧めしません)、スクリプトを使用して次のことを行うことができます。画像の一意のキーをエンコードまたは記録して画像を表示します。たとえば、bg.php?id = 4323-34442-3432-4532は、ファイルパスを取得するためにdbをチェックし、適切なコンテンツタイプでコンテンツをエコーし​​ます。

いくつかの例;

データURIウィキペディアページに基づく

データURIメソッド

このような機能を想定しています。

 function data_uri($fileID) {
     $fRecord = mysql_fetch_array(
         mysql_select("SELECT filePath, mimeType from fileTable WHERE fileID = " $fileID . ";")
     );
    $contents = file_get_contents($fRecord['filePath']);
    $base64 = base64_encode($contents);
    return "data:$fRecord['mimeType'];base64,$base64";
}

次に、html/phpページに次のスニペットがあります

style="background-image:url('<?php echo data_uri($fileID);?>'

PHPイメージダンプ

このような機能を想定しています。

// Given a filename and a mimetype; dump the contents to the screen
function showDocumentContent($fileID){
     $fRecord = mysql_fetch_array(
         mysql_select("SELECT filePath, mimeType from fileTable WHERE fileID = " $fileID . ";")
     );
    header( 'Content-Encoding: none', true );       
    header( 'Content-Type: ' . $fRecord['mimeType'], true );
    echo readfile( $fRecord['filePath'] );
}

次に、HTMLページにこれがあります。

style="background-image:url('image.php?fileID=123')

最初のケースでは、数KBを超える画像は、同じように大きなHTMLページになり、ブラウザで一貫してサポートされない場合があります。2番目のケースでは、画像のふりをするphpスクリプトを効果的に作成しているはずです。どちらの場合も、サーバー上のバイナリファイルへの実際のパスは、データベースにマッピングを保存することで抽象化されます。

于 2012-10-23T21:24:33.630 に答える
1

データベースやファイルなどの場所にファイルへのパスを保存する場合はreadfile()、パスを取得すると、を使用してファイルを出力できます。

content-typeこれをヘッダーと組み合わせて、次のbackground-imageような正しいクエリ文字列を使用してPHPスクリプトへのURLを設定します。

style="background-image:url('script.php?img=30382');"
于 2012-10-23T21:22:43.797 に答える
0

クライアントのブラウザはファイルにアクセスする必要があるため、クライアントへのパスを公開する必要があります。Webサーバー構成を使用して、間接的な場所でサービスを提供するか、PHPで画像を提供し、readfile()の呼び出しで実際のパスを使用できます。

于 2012-10-23T21:23:24.903 に答える