0

symfony2 を使用してマルチステップ ファイル アップロードを構築しています。

最初の画面では、ユーザーは CSV ファイルをアップロードできます。

2 番目の画面では、データベース列を CSV 列にマップできます。

コントローラーには、各画面に 1 つずつ、合計 2 つのメソッドがあります。

file_upload => 最初の画面

match_csv => セカンド スクリーン

file_upload メソッド内に、次のコードがあります。

 return $this->redirect($this->generateUrl('match_csv', 
                        array(
                               'accountId' => $accountId,
                               'projectId' => $projectId,
                               'file' => base64_encode( $file->getPathname() )
                              )
                         ), 301);

私のmatch_csv方法では、次のコードがあります。

    $file = base64_decode($file);
    $csvFile = new \SplFileObject( $file );
    $csvFile->setFlags(\SplFileObject::READ_CSV);

私の問題は次のとおりです。

file_uploadビューを からに切り替えるmatch_csvと、ファイルが存在しないことを示すエラーがサーバーから返されます。

スクリプトの実行が停止するとすぐに、PHP が一時ファイルを削除することを理解しています。したがって、symfony2 でビューを切り替えると、file_upload メソッドが停止し、ファイルが削除されます。

私の質問は/です:

ビュー間でアップロードされたファイルを共有するためのより良い代替手段はありますか?

Symfony2/PHP が自動的に削除しないように、一時ファイルを自分で作成し、使用を停止した直後に削除することは良い考えですか?

4

1 に答える 1

0

ファイル名を URL に保存することはお勧めできません。セキュリティ上のリスクがあります。そのためにセッションを使用します。

  1. ファイルを一時領域にアップロードし、移動先のパスをセッションに保存します。

  2. 次に、2 番目の方法で、セッションからパスを取得し、解析を行ってからファイルを削除します。それでおしまい。

于 2013-07-18T20:27:17.410 に答える