[PHP-users 31730] Re: POST で送信し、 GD でダイレクト出力し、< img >で表示する方法

鈴木孝征 takamasa @ thaliana.myhome.cx
2007年 3月 22日 (木) 09:32:15 JST


鈴木です。

> gousei.phpを以下の内容にして検証してみました。
> <?php
> header('Content-type: image/jpeg');
> print $_SESSION['photomoji'];
>  $fp = fopen('tmp/test', 'w');
>  fwrite($fp, $_SESSION['photomoji']);
> ?>
> 
> この場合、tmp/testには何も作成されませんでした。

session_start()がないようですね。PHPのマニュアルを見てセッションが使える
ようにしてください。
http://www.php.net/manual/ja/ref.session.php

> しかし、/tmp/testは自分で適当につくったファイルのため、/tmp/test
> をアップロードされたファイルの一時ファイル名である、
> $HTTP_POST_FILES['filename']['tmp_name']
> にしたいと思いました。

PHPが作成する送信されたファイルはそのスクリプトの終了とともに消えてしま
うはずです。ので、別の自分で管理するディレクトリにファイルを移動する必要
があります。

この辺を一度お読みください。
http://www.php.net/manual/ja/features.file-upload.php

>> header("location: /tmp/test");
>> でいいんじゃないですか・・・

土屋さんの最初の希望は途中でファイルを作成しないということでしたので、こ
の方法は希望に合わないのではないかと思います。

もちろん仕様を変更し、アップロードされたファイルを'どこかに'保存するよう
にするほうが簡単だと思いますが。

件名にある「ダイレクト出力」にどこまでこだわるかということに関わると思い
ます。セッションを利用するっていうことは結局PHPが自動でファイルを作成し
そこにデータを保存するっていうことなので、一切ファイルを作成したくないと
いう希望であれば別の方法を考えないといけないと思います。



PHP-users メーリングリストの案内