0

画像をフォルダーに保存せずに、画像を表示してphpの実行可能ファイルに入力パラメーターとして渡すにはどうすればよいですか。ユーザーは画像パスを入力として指定し、フォルダーに保存するときに画像が選択されたときにajaxを使用して画像を表示していますが、フォルダーに保存せずに表示するにはどうすればよいですか? 私のコードは今

     move_uploaded_file($_FILES["file"]["tmp_name"],"upload/".$_FILES["file"]["name"]);
                        //echo "Stored in "."upload/".$_FILES["file"]["name"];
                        echo "<img src='upload/".$_FILES["file"]["name"]."' class='preview'>";

私は試した

   <img src=$_FILES["file"]["tmp_name"]. class='preview'> 

しかし、うまくいきませんでした。何千ものユーザーから何千もの入力があるので、保存したくありません。これを行うための最適化された効率的な方法はありますか?

4

3 に答える 3

0

タグのsrc属性は<img>、クライアントがアクセスできる URL である必要があります。

一時ファイルのローカル パス (例: path/to/your/file.jpg) を URL として指定しようとしても、機能しません。

info: アップロードされた画像はローカル ディスクの一時ディレクトリに保存され、後で PHP によって削除される可能性があります。

URL で到達可能な場所に画像を移動せずに表示したい場合は、そのコンテンツを base64 コンテンツとして読み込んでみることができます。

$imagedata = file_get_contents($_FILES["file"]["tmp_name"]);
$base64 = base64_encode($imagedata);

HTMLで使用します

<img src="data:image/png;base64, <?php echo $base64; ?>" />
于 2013-04-10T02:50:58.377 に答える
0

保存せずに画像を表示することはできないと思います。サーバー側の一時フォルダーに画像を保存し、このフォルダーを定期的にクリーンアップして、多くのスペースを消費しないようにすることができます。

于 2013-04-10T02:53:36.533 に答える
0

保存せずに画像を表示することはできないと思います。

後で出力する場合は、ファイルをファイルシステムまたはメモリに保存する必要があります

ここでの問題は、画像が送信されたスクリプトに $_FILES のみが存在することです。そのため、img ソースに対して別の http リクエストを開始すると、php は、どのファイルを読み取ろうとしているのかわかりません。

http リクエストでどの画像を読み取るかを指定する方法が必要です。

できることの 1 つは、クライアントがアクセスできる場所にファイルを保存し、出力後に php で削除することです。そのため、イメージが出力されると、そのイメージは削除され、ファイル システムには存在しなくなります。

もう 1 つの方法は、コンテンツを httpresponse に直接書き込むことによって、メモリから画像を取得することです。

あなたはこのようにすることができます

$image            = file_get_contents($_FILES["file"]["tmp_name"]);
$enocoded_data    = base64_encode($image);

画像タグを表示すると:

<img src="data:image/png;base64, <?php echo $enocoded_data    ; ?>" />

これらのいずれかがあなたに役立つことを願っています

于 2013-04-10T02:55:01.743 に答える