2017-01-30 4 views
0

Я пытаюсь загрузить несколько изображений с несколькими формами, используя Symfony3Symfony загрузить несколько изображений найдено только 2 изображений

после Посылаю я получаю эту ошибку:

The file "C:\Users\aykon\AppData\Local\Temp\phpE956.tmp" does not exist

CRITICAL - Uncaught PHP Exception Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException: "The file "C:\Users\aykon\AppData\Local\Temp\phpE956.tmp" does not exist" at C:\Users\aykon\PhpstormProjects\viamia\vendor\symfony\symfony\src\Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser.php line 123

это происходит в течение цикла после загрузки успешной второе изображение

жаль кода, но я пытался его многими способами с массивами и фиктивного кода и так что это еще один фиктивный код с таким же кодом

public function homepageSecondManagementAction(Request $request) 
    { 
     $homepageENAll = $this->getDoctrine()->getRepository('ContentManagementSystemBundle:HomepageEN')->findAll(); 
     $homepageCSAll = $this->getDoctrine()->getRepository('ContentManagementSystemBundle:HomepageCS')->findAll(); 

     $homepageEN = []; 
     $homepageCS = []; 
     for ($x = 2; $x < 5; $x++) { 
      $homepageEN[] = $homepageENAll[$x]; 
      $homepageCS[] = $homepageCSAll[$x]; 
     } 

     $block1ENForm = $this->createForm(HomepageBlckHdrDsshENForm::class, $homepageEN[0]); 
     $block1CSForm = $this->createForm(HomepageBlckHdrDsshCSForm::class, $homepageCS[0]); 
     for ($x = 2; $x < 4; $x++) { 
      ${"block" . $x . "ENForm"} = $this->createForm(HomepageHdrDsshENForm::class, $homepageEN[$x - 1]); 
      ${"block" . $x . "CSForm"} = $this->createForm(HomepageHdrDsshCSForm::class, $homepageCS[$x - 1]); 
     } 

     $counter = 1; 

     foreach ($homepageEN as $key => $value) { 
      ${"image" . $counter} = $value->getHomepageImageMain()[0]; 
      ${"file" . $counter} = (!empty(${"image" . $counter}) ? ${"image" . $counter}->getFile() : null); 
      ${"imageForm" . $counter} = $this->createForm(ImageUploadForm::class, ${"image" . $counter}); 
      $counter++; 
     } 

     for ($x = 1; $x < 4; $x++) { 
      ${"block" . $x . "ENForm"}->handleRequest($request); 
      ${"block" . $x . "CSForm"}->handleRequest($request); 
      ${"imageForm" . $x}->handleRequest($request); 
     } 

     $validForm = true; 

     for ($x = 1; $x < 4; $x++) { 
      if (!${"block" . $x . "ENForm"}->isSubmitted() && !${"block" . $x . "CSForm"}->isSubmitted() && 
       !${"imageForm" . $x}->isSubmitted() 
      ) { 
       $validForm = false; 
      } 
     } 

     if ($validForm) { 
      $entityManager = $this->getDoctrine()->getManager(); 

      for ($x = 1; $x < 4; $x++) { 
       ${"block" . $x . "EN"} = ${"block" . $x . "ENForm"}->getData(); 
       ${"block" . $x . "CS"} = ${"block" . $x . "CSForm"}->getData(); 
       ${"block" . $x . "EN"}->setBlockName($block1EN->getBlockName()); 
       ${"block" . $x . "CS"}->setBlockName($block1CS->getBlockName()); 
       $entityManager->persist(${"block" . $x . "EN"}); 
       $entityManager->persist(${"block" . $x . "CS"}); 

       ${"image" . $x} = ${"imageForm" . $x}->getData(); 
       dump(${"image" . $x}); 
       if (${"image" . $x}->getFile() != null) { 
        ${"file" . $x} = ${"image" . $x}->getFile(); 
        ${"fileName" . $x} = $this->get('app.image_uploader')->upload(${"file" . $x}); 
        ${"image" . $x}->setFile(${"fileName" . $x}); 
        ${"image" . $x}->setHomepageImageMain($homepageEN[$x - 1]); 
        $entityManager->persist(${"image" . $x}); 
       } 
      } 

      $entityManager->flush(); 

      $this->addFlash('success', 'Edited'); 

      return $this->redirectToRoute('cms'); 
     } 

     return $this->render('backEnd/editSecondHomepage.html.twig', [ 
      'block1EN' => $block1ENForm->createView(), 
      'block1CS' => $block1CSForm->createView(), 
      'block2EN' => $block2ENForm->createView(), 
      'block2CS' => $block2CSForm->createView(), 
      'block3EN' => $block3ENForm->createView(), 
      'block3CS' => $block3CSForm->createView(), 
      'imageForm1' => $imageForm1->createView(), 
      'imageForm2' => $imageForm2->createView(), 
      'imageForm3' => $imageForm3->createView() 
     ]); 
    } 

homepageforms работают без изображений

есть форма изображения

class ImageUploadForm extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('file', FileType::class, array(
       'required' => false, 
       'data_class' => null, 
       'property_path' => 'file' 
      )) 
      ->add('alternative', TextType::class, array(
       'required' => false, 
       'empty_data' => false)) 
      ->add('imgTitle', TextType::class, array(
       'required' => false, 
       'empty_data' => false)) 
      ->add('imgDescription', TextareaType::class, array(
       'required' => false, 
       'empty_data' => false)); 
    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults([ 
      'data_class' => Image::class 
     ]); 
    } 
} 

и есть часть изображения объекта

** 
* @ORM\Entity 
* @ORM\Table(name="image") 
* @ORM\HasLifecycleCallbacks 
*/ 
class Image 
{ 
    /** 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    * @ORM\Column(type="integer") 
    */ 
    private $id; 

    /** 
    * @ORM\Column(type="string") 
    * @Assert\File(
    *  maxSize = "5M", 
    *  mimeTypes = {"image/jpeg", "image/gif", "image/png", "image/tiff"}, 
    *  maxSizeMessage = "The maximum allowed file size is 5MB.", 
    *  mimeTypesMessage = "Only image is allowed." 
    *) 
    */ 
    protected $file; 

здесь является загрузчиком, загрузчик работает над одним файлом является испытано

use Symfony\Component\HttpFoundation\File\UploadedFile; 

class FileUploader 
{ 
    private $targetDir; 

    public function __construct($targetDir) 
    { 
     $this->targetDir = $targetDir; 
    } 

    public function upload(UploadedFile $file) 
    { 
     $fileName = md5(mt_rand()) . '.' . $file->guessExtension(); 

     $file->move($this->targetDir, $fileName); 

     return $fileName; 
    } 
} 

Что я должен делать, чтобы успешно загружать и сохранять более двух изображений?

ответ

0

Расширение вашего третьего файла выглядит так: .tmp: «phpE956.tmp». Но аннотации в вашем свойстве file предполагают, что вы принимаете только jpeg, gif, png или tiff.

Проверьте также, если ваш файл ниже 5Mo

И вы установите значение upload_max_filesize и post_max_size в вашем php.ini?

+0

но первый и второй файл был загружен из файла tmp, также, да, я его читаю, также я пытаюсь загрузить небольшие jpeg-файлы 15kb –