【发布时间】:2019-04-24 06:14:47
【问题描述】:
我想在我的表单中上传多张图片。 事实上,它是有效的,但仅限于图片的小尺寸(比如小于 1Mo)。当我尝试用 4/5Mo 上传图片时,出现此错误:文件“”不存在
我注意到这是由于尺寸的原因,因为对于小图像它效果很好。
所以,我的代码: 与Activity相关的实体图片:
/**
* @ORM\Column(type="string")
* @Assert\NotBlank(message="Please, upload the product brochure as a PNG, GIF, JPEG or JPG file.")
* @Assert\File(mimeTypes = {"image/png","image/jpeg","image/jpg","image/gif"})
* @Assert\File(maxSize="50M")
*/
private $url;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $legende;
/**
* @ORM\Column(type="datetime")
*/
private $createdAt;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Activity", inversedBy="pictures")
*/
private $activity;
表格图片类型:
->add('url', FileType::class, array('label' => 'Image (JPG, JPEG, PNG, GIF)'))
和控制器,在创建activity(图片形式在这里,添加activity时可以选择添加一张或多张图片)
/**
* @Route("/create_activity", name="create_activity")
*/
public function create_activity(Request $request, ObjectManager $manager){
$activity = new Activity();
$form = $this->createForm(ActivityType::class, $activity);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$pictures = $activity->getPictures(); // On récupère toutes les photos ajoutées
if($pictures){ // S'il y a des photos
foreach ($pictures as $picture ) { // Pour chaque photo
$file = $picture->getUrl(); // On récupère l'url uploadé
// ERROR COMING HERE at $file->guessExtension();
$fileName = $this->generateUniqueFileName().'.'.$file->guessExtension(); // On génère un nom de fichier
// Move the file to the directory where brochures are stored
try {
$file->move( // On l'ajoute dans le répertoire
$this->getParameter('pictures_directory'),
$fileName
);
} catch (FileException $e) {
// ... handle exception if something happens during file upload
}
$picture->setUrl($fileName);
}
}
$activity->setCreatedAt(new \DateTime());
$activity->setDeleted(0);
$manager->persist($activity);
$manager->flush();
return $this->redirectToRoute('show_activity', ['id' => $activity->getId()]);
}
return $this->render('activity/create_activity.html.twig', [
'formActivity' => $form->createView(),
'activity' => $activity
]);
}
我做了很多'回声;出口;'知道错误来自哪里,她来自“$file->guessExtension();”
非常感谢您的帮助!
【问题讨论】:
-
1) 不要创建自己的自行车 - symfony.com/doc/master/bundles/EasyAdminBundle/integration/… :) 2) 检查文件是否存在:$file = $picture->getUrl(); if (null !== $file) { } 3) 如果它适用于小文件 - 也许 php.ini 有一些限制 - stackoverflow.com/questions/2184513/…
-
谢谢,但我已经检查了 php.ini,它很好。我会试试这个包,但我不明白为什么它不像我那样工作:/ 如果她是,该文件存在小,但如果她大,她不存在..
-
还有 post_max_size 和 upload_max_filesize - 你确定它们设置正确吗?
标签: php file symfony upload symfony4