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