我需要从URL下载文件并使用Uploadable (DoctrineExtensions)将其保存到我的服务器上。几乎一切都正常,我的方法是:
如果我跳过验证,一切都很好。文件被成功移动到正确的路径(由config.yml中的Uploadable扩展配置),并保存到数据库。但是使用手动创建的
有没有办法使它工作?
- 使用
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的验证器,并使用自定义方法验证文件,但使用Symfony Validator对象似乎是更清洁的解决方案。文件无法上传。
有没有办法使它工作?