gpt4 book ai didi

php - 在 Symfony 2.8 中上传多张图片

转载 作者:搜寻专家 更新时间:2023-10-31 21:52:52 24 4
gpt4 key购买 nike

我正在使用 Symfony 2.8,我制作了一个表格来上传 1 张图片,并且工作正常。但我现在遇到的问题是,我想让这个表格允许我们多张图片。这是我尝试过的方法,但还没有结果!

图像实体:

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\HttpFoundation\File\File;

/**
* Image
*
* @ORM\Table(name="image")
* @ORM\Entity(repositoryClass="AppBundle\Repository\ImageRepository")
*/
class Image
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

/**
* @var string
*
* @ORM\Column(name="path", type="string", length=255)
*/
private $path;

/**
* @ORM\Column(type="string")
*
* @Assert\NotBlank(message="Please, upload the product name as a image file.")
* @Assert\File(mimeTypes={ "image/jpg", "image/jpeg" ,"image/png"})
*/
private $name;


/**
* @var \DateTime
*
* @ORM\Column(name="create_time", type="datetime", nullable=false)
*/
private $createTime;

/**
* @var \DateTime
*
* @ORM\Column(name="change_time", type="datetime", nullable=true)
*/
private $changeTime;

/**
* @ORM\ManyToOne(targetEntity="UserBundle\Entity\User", cascade={"persist"})
* @ORM\JoinColumn(referencedColumnName="id", nullable=false)
*/
private $createUser;

/**
* @ORM\ManyToOne(targetEntity="UserBundle\Entity\User", cascade={"persist"})
* @ORM\JoinColumn(referencedColumnName="id", nullable=true)
*/
private $changeUser;


/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}


/**
* Set path
*
* @param string $path
*
* @return Image
*/
public function setPath($path)
{
$this->path = $path;

return $this;
}

/**
* Get path
*
* @return string
*/
public function getPath()
{
return $this->path;
}


/**
* @return mixed
*/
public function getName()
{
return $this->name;
}

/**
* @param mixed $name
*/
public function setName($name)
{
$this->name = $name;
}

/**
* @return \DateTime
*/
public function getCreateTime()
{
return $this->createTime;
}

/**
* @param \DateTime $createTime
*/
public function setCreateTime($createTime)
{
$this->createTime = $createTime;
}

/**
* @return \DateTime
*/
public function getChangeTime()
{
return $this->changeTime;
}

/**
* @param \DateTime $changeTime
*/
public function setChangeTime($changeTime)
{
$this->changeTime = $changeTime;
}

/**
* @return mixed
*/
public function getChangeUser()
{
return $this->changeUser;
}

/**
* @param mixed $changeUser
*/
public function setChangeUser($changeUser)
{
$this->changeUser = $changeUser;
}

/**
* @return mixed
*/
public function getCreateUser()
{
return $this->createUser;
}

/**
* @param mixed $createUser
*/
public function setCreateUser($createUser)
{
$this->createUser = $createUser;
}



}

图像类型:

<?php

namespace AppBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\SubmitButton;
use Symfony\Component\OptionsResolver\OptionsResolver;

class ImageType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', FileType::class, array("label" => "Files",
"required" => FALSE,
"attr" => array(
"multiple" => "multiple")))
->add('path')
->add('Upload', SubmitType::class)
;
}

/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Image'
));
}
}

图像 Controller :

public function UploadAction(Request $request)
{

$product = new Image();
$form = $this->createForm(ImageType::class, $product);
$form->handleRequest($request);


if ($form->isSubmitted() && $form->isValid()) {

/** @var UploadedFile $file */
$file = $product->getName();

$fileName = md5(uniqid()).'.'.$file->guessExtension();


$file->move(
'/var/www/html/master_c/web/images/',
$fileName
);

$product->setName($fileName);
$em = $this->getDoctrine()->getManager();
$em->persist($product);
$em->flush();

}

return $this->render('AppBundle:Image:upload.html.twig', array(
'form' => $form->createView(),
));
}

上传.html.twig :

{{ form_start(form) }}
{# ... #}

{{ form_row(form.name, { 'attr': {'multiple': 'multiple' }}) }}
{{ form_end(form) }}

最佳答案

创建多次上传您需要在您的表单类型中创建一个集合类型,并使 JavaScript 在前端添加多次上传。更多详细信息,您可以查看文档。 http://symfony.com/doc/current/reference/forms/types/collection.html

关于php - 在 Symfony 2.8 中上传多张图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38011363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com