ダウンロード ファイルを URL からサーバーにアップロードし、それをUploadable (DoctrineExtensions)で永続化する必要があります。ほとんどすべてが正常に機能します。私のアプローチは次のとおりです。
curl
サーバーの一時フォルダーにファイルをダウンロードするUploadedFile
メソッドを作成し、プロパティ値を入力します- アップロード可能なエンティティに挿入します
Media
- 検証を行う
- 永続化してフラッシュする
簡略化されたコード:
// ... download file with curl
// Create UploadedFile object
$fileInfo = new File($tpath);
$file = new UploadedFile($tpath, basename($url), $fileInfo->getMimeType(), $fileInfo->getSize(), null);
// Insert file to Media entity
$media = new Media();
$media = $media->setFile($file);
$uploadableManager->markEntityToUpload($media, $file);
// Validate file (by annotations in entity)
$errors = $validator->validate($media);
// If no errors, persist and flush
if(empty($errors)) {
$em->persist($this->parentEntity);
$em->flush();
}
検証をスキップすると、すべて問題ありません。ファイルは正常に正しいパス (config.yml の Uploadable 拡張機能によって構成) に移動され、データベースに永続化されます。しかし、手動で作成された検証では、次のUploadedFile
エラーが返されます。
ファイルをアップロードできませんでした。
URL からのアップロードに対して Validator を無効にし、カスタム メソッドでファイルを検証することはできますが、Symfony Validator オブジェクトでそれを行うと、私にとってはよりクリーンなソリューションのように思えます。
それを機能させる方法はありますか?