Php Symfony多张图片上传仅找到2张图片
我正在尝试使用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循环中发生 很抱歉,我用数组和伪代码尝试了很多方法,所以这是另一个用相同代码的伪代码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
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;
}
}