我創建了一個上傳圖片的表單,上傳本身正在工作,但是錯誤的值被寫入數據庫。 這是在我的控制器代碼:文件上傳後symfony在數據庫中輸入錯誤的值
<?php
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use AppBundle\Entity\Users;
use AppBundle\Service\FileUploader;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
class DefaultController extends Controller
{
/**
* @Route("/bearbeiten/{id}", name="edit")
*/
public function editAction($id, Request $request, FileUploader $fileUploader){
$user = new Users();
//Formular wird erstellt
$form = $this->createFormBuilder($listen)
->add('bild', FileType::class, array('required'=>false, 'label'=>'Bild (JPEG-Datei)', 'data_class'=>null))
->add('save', SubmitType::class, array('label'=>'Speichern', 'attr'=>array('class'=>'btn btn-primary')))
->getForm();
$form->handleRequest($request);
//Falls die Form valid ist....
if($form->isSubmitted() && $form->get('save')->isClicked()){
//Daten aus der Form in Variabeln sichern
$file = $form['bild']->getData();
$filename = $fileUploader->upload($file);
dump($filename);
$user->setBild($filename);
return $this->redirectToRoute('homepage');
}
}
}
FileUploader存儲在FileUploader.php的服務和具有下面的代碼:
<?php
namespace AppBundle\Service;
use Symfony\Component\HttpFoundation\File\UploadedFile;
class FileUploader
{
private $targetDir;
public function __construct($targetDir) {
$this->targetDir = $targetDir;
}
public function upload(UploadedFile $file) {
$fileName = md5(uniqid()).'.'.$file->guessExtension();
$file->move($this->getTargetDir(), $fileName);
return $fileName;
}
public function getTargetDir() {
return $this->targetDir;
}
}
我也中定義的服務services.yml:
AppBundle\Service\FileUploader:
arguments:
$targetDir: '%file_directory%'
...和聲明的變量file_directory在config.yml:
parameters:
locale: en
file_directory: '/tmp'
現在,當我轉儲variabel $文件名,我得到的值回我預計,2d504a8e0a9daba27e7baab69dc08896.jpeg作爲一個例子,但即使我使用相同的變量來將字符串保存到我的數據庫$user->setBild($filename);
,另一個值會寫入我的表中。 我的db中值的示例:/tmp/phpn7rb2i
我真的很困惑,並且非常感謝您的幫助。 希望你們中的一些人能幫助我克服這一點。
你在哪裏堅持和沖洗? –
您只需將文件移動到某個位置,但忘記在實體字段中添加文件名。 –
看看這個http://symfony.com/doc/2.0/cookbook/doctrine/file_uploads.html,這將給你一些很好的線跟隨處理文件上傳:) – Mcsky