Php Symfony多张图片上传仅找到2张图片

Php Symfony多张图片上传仅找到2张图片,php,image,symfony,symfony-forms,Php,Image,Symfony,Symfony Forms,我正在尝试使用Symfony3上传多张带有多个表单的图像 提交后,我出现以下错误: 文件“C:\Users\aykon\AppData\Local\Temp\phpE956.tmp”不存在 存在 严重-未捕获的PHP异常 Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException: “文件”C:\Users\aykon\AppData\Local\Temp\phpE956.tmp”不存在 存在于 C:\Users\a

我正在尝试使用Symfony3上传多张带有多个表单的图像

提交后,我出现以下错误:

文件“C:\Users\aykon\AppData\Local\Temp\phpE956.tmp”不存在 存在

严重-未捕获的PHP异常 Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException: “文件”C:\Users\aykon\AppData\Local\Temp\phpE956.tmp”不存在 存在于 C:\Users\aykon\PhpstormProjects\viamia\vendor\symfony\symfony\src\symfony\Component\HttpFoundation\File\MimeType\mimetypeguester.php 第123行

这在成功上传第二个图像后的for循环中发生

很抱歉,我用数组和伪代码尝试了很多方法,所以这是另一个用相同代码的伪代码

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()
        ]);
    }
还有一部分是图像实体

**
 * @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;
这里是uploader,uploader正在测试一个文件

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;
    }
}

要成功上传并保存两个以上的图像,我应该怎么做?

第三个文件的扩展名看起来像是.tmp:“phpE956.tmp”。 但是
文件
属性中的注释建议您只接受jpeg、gif、png或tiff

同时检查您的文件是否低于5Mo


你在php.ini中设置了
upload\u max\u filesize
post\u max\u size
的值吗?

但是第一个和第二个文件也是从tmp文件加载的,是的,我改变了它,我也尝试上传15kb的小jpeg文件
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;
    }
}