3

Ajaxアプリケーションを使用して、 Symfony2 Web アプリケーションにファイルをアップロードします。ファイルをアップロードするときは、次のようなパスに配置します。

"%kernel.root_dir%/../web/bundles/acmehome/images/uploaded"

これらのファイルの管理に関して、私は多くのトラブルを抱えています。

Webディレクトリ内のすべてのファイルが表示可能/検索可能/閲覧可能ですか? はいの場合、登録ユーザーのみに表示されるようにするには、保存目的でどのパスを使用する必要がありますか?

ここでユーザーRookがファイルをweb rootに保存しないように提案したため、この質問をします。

4

2 に答える 2

0

はい、デフォルト設定では、すべてのファイルが表示/検索可能/閲覧可能です。ディレクトリ内の .htaccess ファイルによってアクセスを制限できます。

アップロードしたファイルを Web ルート以外のフォルダーに移動するのは良い方法だと思います。

このトピックは私に非常に興味を持っていました。

于 2012-11-19T15:10:07.890 に答える
0

それを管理するために私がしたことは、アップロードごとにデータベースエントリを作成することです

1 - web/upload/[月]/[日] のようなフォルダーにファイルをアップロードします (アップロードフォルダーを .htaccess で保護しました)

2 - (アップロードと呼ばれるドクトリンエンティティを作成しました) アップロード中に、名前、説明、ファイルパス、ファイル拡張子、所有者タイプ (ファイルをアップロードするエンティティ)、所有者 ID (エンティティ ID) を含むエントリを作成します。

3 - 最後に、「ブログ エンティティ」(vendor\entity\Blog) またはコメント エンティティ (vendor\entity\Comment) にファイルをアップロードした場合、属するすべてのファイルを要求します。

$em = $this->getDoctrine()->getEntityManager();
        $documents = $em->getRepository('VendorBundle:Upload')->findBy(array(
        'ownerType' =>$entityName,
        'ownerId'   =>$id
    ));

このアプローチは非常に柔軟で、あらゆる種類のエンティティに適用できるアップロード モジュールを作成できます。さらに、アップロードはインデックス化されるため、検索エンジンによる検索がはるかに効率的になります (説明、名前などのメタデータを追加できるため)。

于 2012-11-19T15:28:51.537 に答える