1

私のマルチパートフォームのフローは、基本的に回答フォーム->プレビューフォーム->データベースへのアップロードです。

POSTデータは実際のフォームから新鮮なので、今はプレビューステップでファイルをアップロードしています。私の問題は$_FILES、データベースへのアップロード関数で1回アクセスすることです。これは、内部で1回var_dump($_FILES)戻るためです。array(0) {}upload_to_database()

受け取るinput[type=file]ためだけにプレビューステップで実際に非表示にすることを考えましたが、セキュリティ上の理由からこれは不可能です。upload_to_database()$_FILES

どうすればこれを解決できますか?

編集

申し訳ありませんが、上記の私の投稿はあいまいでした。

upload_to_database()実際に関数で一度アップロードしたいです。ユーザーが確実に回答を得るデータベースへのアップロードとは異なり、プレビュー段階でユーザーのファイルをアップロードすることは悪い習慣だと思います。

現在、アップロードはプレビュー内でのみ機能するため、現在プレビュー中です。に移動すると、$_FILESは空になりupload_to_database()ます。

$_FILESプレビューから完全で一貫性のあるものを取得するにはどうすればよいupload_to_database()ですか?

4

2 に答える 2

1

最初のステップでファイルをアップロードし(プレビューフォームに移動するとき。現在のように)、previewデータベースにアップロードするときに、ファイルを特定のディレクトリに移動し、最終的な宛先に移動することができます。

投稿されたデータを追跡するためにセッションのようなものを使用してpreview、同じ方法でファイルパスを追加できると思います。

preview次に、ディレクトリ内のxx時間より古いすべてのファイルをxx時間ごとに削除する単純なcronジョブを設定します。

編集:別の方法は、JavaScriptで完全にクライアント側でプレビューを行うことです。たとえば、ここSOでの質問と回答のプレビューなどです。

于 2013-02-28T16:42:54.207 に答える
0

次のようなことはできませんか?

プレビュー:

upload_to_database($_FILES['userfile']['tmp_name']);

DB:

function upload_to_database($file)
{
  // work with file here
}

upload_to_database関数の引数として$_FILESを指定することを意味します

于 2013-02-28T16:43:24.643 に答える