我正在开发一个项目,我最多编写一个Rest组件来将用户保存在数据库中。该组件还应将用户的照片保存在服务器上的文件夹中。我将参数作为Json发送到我的Rest Api。
我跟踪了tutorial一百次。但我仍然得到错误
文件“/home/herval/Desktop/zipf.png”不存在
尝试新File(pathOfTheUploadedFile)
时。所以似乎Rest Api在本地查看文件。
当我尝试提供服务器上的文件时,它会移动文件而不是复制它。
请有人帮帮我吗?
以下是我的代码:
控制器:
/**
* @Rest\Post("")
*/
public function mitgliedAnlegenRestAction(Request $request)
{
$parametersAsArray = [];
if ($content = $request->getContent()) {
$parametersAsArray = json_decode($content, true);
}
$mitglied_param = $parametersAsArray['mitglied'];
$token_param = $parametersAsArray['token'];
$repository = $this->getDoctrine()
->getManager()
->getRepository('OrchesterRestBundle:Mitglied');
$ersteller = $repository->findOneBy(array('token'=>$token_param));
$ant = new Antwort();
if($ersteller == NULL){
$ant->setCode(202);
$ant->setContent(NULL);
return $ant;
}else{
if($ersteller->hasArt('ADMIN')){
$repositoryG = $this->getDoctrine()
->getManager()
->getRepository('OrchesterRestBundle:Gruppe');
$repositoryMG = $this->getDoctrine()
->getManager()
->getRepository('OrchesterRestBundle:MitgliedGruppe');
$repositoryA = $this->getDoctrine()
->getManager()
->getRepository('OrchesterRestBundle:Art');
$repositoryI = $this->getDoctrine()
->getManager()
->getRepository('OrchesterRestBundle:Instrument');
$mitglied = new Mitglied($repositoryG);
$id = $mitglied->setValueFromJson($mitglied_param);
foreach($mitglied_param['arts'] as $artID){
$art = $repositoryA->find($artID);
if($art != NULL)
$mitglied->addArt($art);
}
foreach($mitglied_param['instrumente'] as $instrumentID){
$instrument = $repositoryI->find($instrumentID);
if($instrument != NULL)
$mitglied->addInstrumente($instrument);
}
if(($repository->findBy(array('username'=>$mitglied->getUsername())) != NULL
OR $repository->findBy(array('email'=>$mitglied->getEmail())) != NULL)
AND $request->isMethod('POST')){
$ant->setCode(302);
$ant->setContent(NULL);
return $ant;
}else{
$mitglied->setRegDatum(date_create('now'));
if($mitglied_param['photo'] != ''){
$mitglied->setPhoto(
new File($mitglied_param['photo'])
);
}
$validator = $this->get('validator');
$listErrors = $validator->validate($mitglied);
if(sizeof($listErrors) == 0){
$auth = $this->container->get('orchester_rest.auth');
$passwort= $auth->generate_token(15);
$mitglied->setPwd(md5($passwort));
$mitglied->setMitgliedErsteller($ersteller);
//Upload photo
/** @var Symfony\Component\HttpFoundation\File\UploadedFile $file */
if($mitglied_param['photo'] != ''){
$file = $mitglied->getPhoto();
$fileName = md5(uniqid()).'.'.$file->guessExtension();
$file->move(
$this->getParameter('photos_directory'),
$fileName
);
$mitglied->setPhoto($fileName);
}
$em = $this->getDoctrine()->getManager();
if($request->isMethod('POST')){
$em->persist($mitglied);
//Envoyer Email
$message = \Swift_Message::newInstance('Registrierung')
->setSubject('Registrierung')
->setFrom($this->getParameter('email_system'))
->setTo($mitglied->getEmail())
->setBody($this->getParameter('salutation').", ".$mitglied->getVorname()." "
.strtoupper($mitglied->getNachname())."\n"
."Dein Konto ist bereits erstellt. Da unten stehen deine Daten.\n\n"
."\nVorname: ".ucfirst($mitglied->getVorname())
."\nNachname: ".ucfirst($mitglied->getNachname())
."\nGeburtsdatum: ".$mitglied->getGeburtsdatum()->format('d.m.Y')
."\nEintrittsdatum: ".$mitglied->getEintrittsdatum()->format('d.m.Y')
."\nRegistrierungsdatum: ".$mitglied->getRegDatum()->format('d.m.Y')." um ".$mitglied->getRegDatum()->format('H.i')."Uhr"
."\n\n"
."\nAdresse: ".ucfirst($mitglied->getStrasse())." ".$mitglied->getHausnummer()." ".$mitglied->getPlz()." ".ucfirst($mitglied->getStadt())
."\n\n"
."\nEmail: ".$mitglied->getEmail()
."\nBenutzername: ".$mitglied->getUsername()
."\nPasswort: ".$passwort
."\n\n"
."Aus Sicherheitsgründen empfehlen wir Ihnen, Ihr Passwort so früh wie möglich zu ändern."
."\n\n"
."\n".$this->getParameter('schluss')
."\n".$this->getParameter('team'));
$this->get('mailer')->send($message);
}else{
$reg_mitglied = $repository->find($id);
if($reg_mitglied == NULL){
$ant->setCode(301);
$ant->setContent($mitglied);
return $ant;
}else{
$reg_mitglied->setValueFromMitglied($mitglied);
$em->flush();
$ant->setCode(100);
$ant->setContent($reg_mitglied);
return $ant;
}
}
$em->flush();
$ant->setCode(100);
$ant->setContent($mitglied);
return $ant;
}else{
$ant->setCode(701);
$ant->setContent($listErrors);
return $ant;
}
}
}else{
$ant->setCode(601);
$ant->setContent(NULL);
return $ant;
}
}
}
实体
/**
* Mitglied
*
* @ORM\Table(name="mitglied")
* @ORM\Entity(repositoryClass="OrchesterRestBundle\Repository\MitgliedRepository")
*/
class Mitglied
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="username", type="string", length=15)
* @Assert\Length(min=6, max=15)
*/
private $username;
/**
* @var string
*
* @ORM\Column(name="email", type="string", length=100)
* @Assert\Email
*/
private $email;
/**
* @var string
*
* @ORM\Column(name="nachname", type="string", length=100, nullable=true)
* @Assert\Length(min=2, max=100)
*/
private $nachname;
/**
* @var string
*
* @ORM\Column(name="vorname", type="string", length=100, nullable=true)
* @Assert\Length(min=2, max=100)
*/
private $vorname;
/**
* @var string
*
* @ORM\Column(name="pwd", type="string", length=255)
* @Assert\Length(min=6, max=30)
*/
private $pwd;
/**
* @var string
*
* @ORM\Column(name="photo", type="string", length=255, nullable=true)
* @Assert\File(mimeTypes={ "image/jpeg", "image/pjpeg", "image/png", "image/gif" })
*/
private $photo;
/**
* @var \Date
*
* @ORM\Column(name="eintrittsdatum", type="date", nullable=true)
* @Assert\Date()
*/
private $eintrittsdatum;
/**
* @var \Date
*
* @ORM\Column(name="geburtsdatum", type="date", nullable=true)
* @Assert\Date()
*/
private $geburtsdatum;
/**
* @var \DateTime
*
* @ORM\Column(name="reg_datum", type="datetime")
*/
private $regDatum;
/**
* @var string
*
* @ORM\Column(name="token", type="string", length=255, nullable=true)
*/
private $token;
/**
* @var int
*
* @ORM\Column(name="plz", type="integer", nullable=true)
*/
private $plz;
/**
* @var string
*
* @ORM\Column(name="stadt", type="string", length=100, nullable=true)
* @Assert\Length(min=2, max=100)
*/
private $stadt;
/**
* @var string
*
* @ORM\Column(name="strasse", type="string", length=100, nullable=true)
* @Assert\Length(min=3, max=100)
*/
private $strasse;
/**
* @var string
*
* @ORM\Column(name="hausnummer", type="string", length=15, nullable=true)
* @Assert\Length(min=1, max=15)
*/
private $hausnummer;
/**
* @ORM\ManyToOne(targetEntity="OrchesterRestBundle\Entity\Mitglied", cascade={"persist", "remove"})
*/
private $MitgliedErsteller;
/**
* @ORM\ManyToMany(targetEntity="OrchesterRestBundle\Entity\Art", cascade={"persist", "remove"})
*/
private $arts;
/**
* @ORM\ManyToMany(targetEntity="OrchesterRestBundle\Entity\Instrument", cascade={"persist", "remove"})
*/
private $instrumente;
/**
* @ORM\OneToMany(targetEntity="OrchesterRestBundle\Entity\MitgliedGruppe",cascade={"persist", "remove"}, mappedBy="mitglied")
* @ORM\JoinColumn(nullable=true)
*/
private $mitglied_gruppen;
/**
* Constructor
*/
public function __construct($gruppeRepository = NULL)
{
$this->arts = new \Doctrine\Common\Collections\ArrayCollection();
$this->instrumente = new \Doctrine\Common\Collections\ArrayCollection();
$this->mitglied_gruppen = new \Doctrine\Common\Collections\ArrayCollection();
if($gruppeRepository != NULL){
$gruppen = $gruppeRepository->findFromName('ALL');
if($gruppen != NULL)
if($gruppen[0] != NULL){
$mg = new MitgliedGruppe();
$mg->setBeitreten(true);
$mg->setGruppe($gruppen[0]);
$mg->setDatum(date_create('now'));
$mg->setMitglied($this);
$this->addMitgliedGruppen($mg);
}
}
}
/**
* Add art
*
* @param \OrchesterRestBundle\Entity\Art $art
*
* @return Mitglied
*/
public function addArt(\OrchesterRestBundle\Entity\Art $art)
{
if(!$this->arts->contains($art))
$this->arts[] = $art;
return $this;
}
/**
* Remove art
*
* @param \OrchesterRestBundle\Entity\Art $art
*/
public function removeArt(\OrchesterRestBundle\Entity\Art $art)
{
$this->arts->removeElement($art);
}
/**
* Get arts
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getArts()
{
return $this->arts;
}
/**
* Set arts
*
* @param \Doctrine\Common\Collections\Collection $arts
*
* @return \Doctrine\Common\Collections\Collection
*/
public function setArts($arts)
{
return $this->arts = $arts;
}
/**
* Add instrumente
*
* @param \OrchesterRestBundle\Entity\Instrument $instrumente
*
* @return Mitglied
*/
public function addInstrumente(\OrchesterRestBundle\Entity\Instrument $instrumente)
{
if(!$this->instrumente->contains($instrumente))
$this->instrumente[] = $instrumente;
return $this;
}
/**
* Remove instrumente
*
* @param \OrchesterRestBundle\Entity\Instrument $instrumente
*/
public function removeInstrumente(\OrchesterRestBundle\Entity\Instrument $instrumente)
{
$this->instrumente->removeElement($instrumente);
}
/**
* Get instrumente
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getInstrumente()
{
return $this->instrumente;
}
/**
* Set instrumente
*
* @param \Doctrine\Common\Collections\Collection $instrumente
*
* @return \Doctrine\Common\Collections\Collection
*/
public function setInstrumente($instrumente)
{
return $this->instrumente = $instrumente;
}
public function setValueFromJson($json_object){
$this->setUsername($json_object['username']);
$this->setEmail($json_object['email']);
$this->setNachname($json_object['nachname']);
$this->setVorname($json_object['vorname']);
$this->setPwd($json_object['pwd']);
$this->setEintrittsdatum(date_create($json_object['eintrittsdatum']));
$this->setGeburtsdatum(date_create($json_object['geburtsdatum']));
$this->setToken($json_object['token']);
$this->setPlz($json_object['plz']);
$this->setStadt($json_object['stadt']);
$this->setStrasse($json_object['strasse']);
$this->setHausnummer($json_object['hausnummer']);
if(isset($json_object['id']))
return $json_object['id'];
return 0;
}
/**
* Set mitgliedErsteller
*
* @param \OrchesterRestBundle\Entity\Mitglied $mitglied
*
* @return Mitglied
*/
public function setValueFromMitglied($mitglied){
$this->setUsername($mitglied->username);
$this->setEmail($mitglied->email);
$this->setNachname($mitglied->nachname);
$this->setVorname($mitglied->vorname);
$this->setPwd($mitglied->pwd);
$this->setPhoto($mitglied->photo);
$this->setEintrittsdatum($mitglied->eintrittsdatum);
$this->setGeburtsdatum($mitglied->geburtsdatum);
$this->setRegDatum($mitglied->regDatum);
$this->setToken($mitglied->token);
$this->setPlz($mitglied->plz);
$this->setStadt($mitglied->stadt);
$this->setStrasse($mitglied->strasse);
$this->setHausnummer($mitglied->hausnummer);
$this->setArts($mitglied->getArts());
$this->setInstrumente($mitglied->getInstrumente());
}
public function hasArt($g_art){
$artArray = $this->arts->toArray();
foreach($artArray as $art)
if($art->getName() == $g_art)
return true;
return false;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set username
*
* @param string $username
*
* @return Mitglied
*/
public function setUsername($username)
{
$this->username = $username;
return $this;
}
/**
* Get username
*
* @return string
*/
public function getUsername()
{
return $this->username;
}
/**
* Set email
*
* @param string $email
*
* @return Mitglied
*/
public function setEmail($email)
{
$this->email = $email;
return $this;
}
/**
* Get email
*
* @return string
*/
public function getEmail()
{
return $this->email;
}
/**
* Set nachname
*
* @param string $nachname
*
* @return Mitglied
*/
public function setNachname($nachname)
{
$this->nachname = $nachname;
return $this;
}
/**
* Get nachname
*
* @return string
*/
public function getNachname()
{
return $this->nachname;
}
/**
* Set vorname
*
* @param string $vorname
*
* @return Mitglied
*/
public function setVorname($vorname)
{
$this->vorname = $vorname;
return $this;
}
/**
* Get vorname
*
* @return string
*/
public function getVorname()
{
return $this->vorname;
}
/**
* Set pwd
*
* @param string $pwd
*
* @return Mitglied
*/
public function setPwd($pwd)
{
$this->pwd = $pwd;
return $this;
}
/**
* Get pwd
*
* @return string
*/
public function getPwd()
{
return $this->pwd;
}
/**
* Set photo
*
* @param string $photo
*
* @return Mitglied
*/
public function setPhoto($photo)
{
$this->photo = $photo;
return $this;
}
/**
* Get photo
*
* @return string
*/
public function getPhoto()
{
return $this->photo;
}
/**
* Set eintrittsdatum
*
* @param \DateTime $eintrittsdatum
*
* @return Mitglied
*/
public function setEintrittsdatum($eintrittsdatum)
{
$this->eintrittsdatum = $eintrittsdatum;
return $this;
}
/**
* Get eintrittsdatum
*
* @return \DateTime
*/
public function getEintrittsdatum()
{
return $this->eintrittsdatum;
}
/**
* Set geburtsdatum
*
* @param \DateTime $geburtsdatum
*
* @return Mitglied
*/
public function setGeburtsdatum($geburtsdatum)
{
$this->geburtsdatum = $geburtsdatum;
return $this;
}
/**
* Get geburtsdatum
*
* @return \DateTime
*/
public function getGeburtsdatum()
{
return $this->geburtsdatum;
}
/**
* Set regDatum
*
* @param \DateTime $regDatum
*
* @return Mitglied
*/
public function setRegDatum($regDatum)
{
$this->regDatum = $regDatum;
return $this;
}
/**
* Get regDatum
*
* @return \DateTime
*/
public function getRegDatum()
{
return $this->regDatum;
}
/**
* Set token
*
* @param string $token
*
* @return Mitglied
*/
public function setToken($token)
{
$this->token = $token;
return $this;
}
/**
* Get token
*
* @return string
*/
public function getToken()
{
return $this->token;
}
/**
* Set plz
*
* @param integer $plz
*
* @return Mitglied
*/
public function setPlz($plz)
{
$this->plz = $plz;
return $this;
}
/**
* Get plz
*
* @return integer
*/
public function getPlz()
{
return $this->plz;
}
/**
* Set stadt
*
* @param string $stadt
*
* @return Mitglied
*/
public function setStadt($stadt)
{
$this->stadt = $stadt;
return $this;
}
/**
* Get stadt
*
* @return string
*/
public function getStadt()
{
return $this->stadt;
}
/**
* Set strasse
*
* @param string $strasse
*
* @return Mitglied
*/
public function setStrasse($strasse)
{
$this->strasse = $strasse;
return $this;
}
/**
* Get strasse
*
* @return string
*/
public function getStrasse()
{
return $this->strasse;
}
/**
* Set hausnummer
*
* @param string $hausnummer
*
* @return Mitglied
*/
public function setHausnummer($hausnummer)
{
$this->hausnummer = $hausnummer;
return $this;
}
/**
* Get hausnummer
*
* @return string
*/
public function getHausnummer()
{
return $this->hausnummer;
}
/**
* Set mitgliedErsteller
*
* @param \OrchesterRestBundle\Entity\Mitglied $mitgliedErsteller
*
* @return Mitglied
*/
public function setMitgliedErsteller(\OrchesterRestBundle\Entity\Mitglied $mitgliedErsteller = null)
{
$this->MitgliedErsteller = $mitgliedErsteller;
return $this;
}
/**
* Get mitgliedErsteller
*
* @return \OrchesterRestBundle\Entity\Mitglied
*/
public function getMitgliedErsteller()
{
return $this->MitgliedErsteller;
}
/**
* Add mitgliedGruppen
*
* @param \OrchesterRestBundle\Entity\MitgliedGruppe $mitgliedGruppen
*
* @return Mitglied
*/
public function addMitgliedGruppen(\OrchesterRestBundle\Entity\MitgliedGruppe $mitgliedGruppen)
{
$this->mitglied_gruppen[] = $mitgliedGruppen;
return $this;
}
/**
* Remove mitgliedGruppen
*
* @param \OrchesterRestBundle\Entity\MitgliedGruppe $mitgliedGruppen
*/
public function removeMitgliedGruppen(\OrchesterRestBundle\Entity\MitgliedGruppe $mitgliedGruppen)
{
$this->mitglied_gruppen->removeElement($mitgliedGruppen);
}
/**
* Get mitgliedGruppen
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getMitgliedGruppen()
{
return $this->mitglied_gruppen;
}
}
答案 0 :(得分:0)
您可以从请求中访问该文件,并按以下方式调整场景的数据:
/**
* @Rest\Post("")
*/
public function mitgliedAnlegenRestAction(Request $request)
{
$parameters = $request->request->all();
$parametersAsArray = json_decode($content, true);
$filesAsArray = $request->files->all();
// You could access to a file uploaded in the file attribute as example
// @var UploadedFile file */
$file = $filesAsArray['file'];
...
希望这个帮助