0

私の Symfony2 アプリでは、テキスト ファイルをアップロードするオプションを提供する必要があります。FormBuilderInterface を使用して「ファイル」タイプのフィールドを作成することで、これをすでに達成しています。ファイルは適切にアップロードされますが、本当に必要なのは、ファイルからテキストを取得して、適切な db テーブル列に挿入することだけです。POST でアップロードされたファイルからテキストを取得する方法はありますか? ありがとう。

4

1 に答える 1

0

少なくとも2つの方法があります。

どちらの場合も、主なポイントは、アップロードされたものを開いて、そのコンテンツをエンティティ プロパティに入力することです (フォームが投稿された後、データが db に永続化される前)。したがって、これには 2 つのエンティティ プロパティが必要です。アップロードされたファイル ハンドラー (データベースにマップされていない) とファイル テキスト自体 (データベースにマップされている) です。

ライフサイクル コールバックの例を次に示します。

実在物:

/**
 * @ORM\Entity()
 * @ORM\HasLifecycleCallbacks
 */
class SomeEntity {

    /**
     * Virtual field used for handling the file
     *
     * @Assert\File()
     */
    private $fileHandler;

    /**
     * @var string
     *
     * @ORM\Column(type="text")
     */
    private $file;

    /**
     * @ORM\PrePersist()
     * @ORM\PreUpdate()
     */
    public function saveFileContent()
    {
        $tmpName = md5(uniqid(mt_rand(), true)) . '.' . $this->fileHandler->guessExtension();
        try
        {
            $this->fileHandler->move(
                '../../../tmp/',
                $tmpName
            );
        } catch (\Exception $e) {}

        $this->setFile(file_get_contents('../../../tmp/' . $tmpName));
        unlink('../../../tmp/' . $tmpName);
    }
}

これも役立つかもしれません: How to handle File Uploads with Doctrine

于 2013-07-10T18:53:31.953 に答える