[PHP-users 26690] Re:  解決の連絡と新しい質問。

nomoto shin-1 @ ca2.so-net.ne.jp
2005年 8月 30日 (火) 12:04:01 JST


  こんにちは。nomotoです。# 新しい話題は新規投稿で送りましょう。

fileタグの「参照」ボタンのついているフォームからしかバイナリデータは
サーバへ飛んでいきません。しかも「参照」ボタンで利用者がファイルを
選ぶ操作をしないと何を送るかは指定できません。
もし参照ボタンをつけていないフォームで閲覧者の手元のファイルを
サーバ側へ強制的に引き出せるとしたら、悪意のあるページなら閲覧者
の意図しないファイルをいつのまにかアップロードされてしまう危険性
もありますよね。

ですので、最初のファイル選択されてアップロードされたバイナリデータを
一旦、サーバ側で仮のディレクトリ等に保存して、それを確認画面で出し、
最終的にOKになったところで、サーバ上で正式なディレクトリへファイル
を移動するしかありません。

一次ファイルは後で整理するとしても、他の利用者とたまたまでも
ファイル名が重なってしまわないよう、プロセス番号やtime()値をつける
とか、session_idを含めるなど、名前の付け方には注意が必要ですね。

>Form1.php → Form2.php(アップロードのファイル選択) →
> 確認.php → アップロード.php
>
>現在、Form2で、アップロードするファイルを選択し、確認.php で一時ファイ
>ルを TEMP から移動し、保存。
>アップロードまで進めば、正式に採用。
>ただ、途中でブラウザを閉じられたりすると、ファイルが残ってしまいます。
>
>一応、データベースと関連付けているので、あとで掃除することはできるのですが
>もし、可能であれば初めから
>
>Form2でデータを選択し、確認.phpへはアップロードするファイル情報だけ
>を伝え、
>アップロード.php で正式にアップロードをできればと考えています。
>
>可能でしょうか?


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