1

ユーザー管理(FOsUserbundleとSonataバンドル)を備えたSymfony2プロジェクトがあります。私のアプリケーションの場合、ユーザー用のファイルを作成する必要があり、それらを保存したいと考えています。ファイルは大きくなる可能性があるため、セッション/ローカル ストレージへの保存は除外します。

最初の質問: ユーザーが生成したファイルとストレージを処理する symfony2 パターンはありますか? これらのファイルはどこに配置する必要がありますか? どのディレクトリ?

2 番目の質問: アプリで使用する必要がある大きなファイルがあります。ユーザーはこのファイルにアクセスできませんが、主にアプリ コントローラーがアクセスする必要があります。このファイルを保存してアクセスを制限する最も安全な方法は何ですか?

4

1 に答える 1

1

最初の質問: 各ユーザーが持っているファイルの数に応じて、何らかの命名規則を使用します。例: temp/[username]/file1.dat または temp/[username].datエンティティでファイルをアップロードするための symfony2 cookbockに従って、この戦略を実装し、機能を確認できます。

public function preUpload()
{
    if (null !== $this->file) {
        // do whatever you want to generate a unique name
        $this->path = uniqid().'.'.$this->file->guessExtension();
    }
}

生成されたファイル名は次のとおりです。ランダムな「uniqueid()」の代わりにユーザー名を簡単に設定できます。

2 番目の質問 私の意見では、ファイルの保護は、Web からアクセスできないフォルダーを介して実装するのが最適です。たとえば、次の構造があるとします。

myproject    
  app    
  src    
  vendor    
  web  <-- your domain points to this folder    
  save_files

次に、ファイルを save_folder に保存して、直接 Web アクセスからアクセスできないようにします。アプリケーション/コントローラーでは、ファイルシステムを介してアクセスするか、KnpGaufretteBundleのような抽象化を使用できます

于 2012-09-12T15:55:43.920 に答える