Symfony 2: странная ошибка с загрузкой файла - PullRequest
0 голосов
/ 09 декабря 2011

Привет, ребята, следуя документу, чтобы сделать загрузчик файлов, но я не могу выяснить, почему он не работает, когда я нажимаю Отправить, он дает ошибку Unable to create the "uploads/cv" directory, хотя эти папки уже существуют в проекте / src / My / UserBundle / Resources / public/ images

объект моего документа

namespace My\UserBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

use Symfony\Component\Validator\Constraints as Assert;



/**
* My\UserBundle\Entity\Document
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="My\UserBundle\Entity\DocumentRepository")
*/
class Document
{
/**
 * @var integer $id
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;


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





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

/**
 * @Assert\File(maxSize="6000000")
 */
 private $file ;

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

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

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


function getFile()
{
    return $this->file;
}   

function setFile($file) 
{
    $this->file =$file;
}


function preUpload()
{
    if(null !== $this->file )
    {
        $this->path = uniqid() . '.' . $this->file->guessExtension();
    }       
}


function upload()
{
    if(null === $this->file)
    { 
        return ;
    }

    $this->file->move( $this->getUploadDir() ,$this->getPath );
    unset($this->file);
}


function removeUpload()
{
    if($file = $this->getAbsolutePath() )
    {
        unlink($file);
    }
}


function getWebPath()
{
    return $this->getUploadDir() . $this->getPath() ;
}


function getUploadDir()
{
    return 'uploads/cv' ; 
}


function getAbsolutePath()
{
    return $this->getRootDir() . $this->getPath() ;
}

function getRootDir()
{
    return __DIR__ . '../../../../src/' .$this->getUploadDir() ;
}



function setName($n)
{
    $this->name =$n ;
}

function getName()
{
    return $this->name ;
}

}

и действие моего контроллера

function uploadAction()
{


    $document = new Document();
    $form = $this->createFormBuilder($document)
        ->add('name')
        ->add('file')
        ->getForm();

    $request = $this->getRequest() ;
    if( $request->getMethod() == 'POST' )
    {
        $form->bindRequest($request);
        if($form->isValid() )
        {
            $em = $this->getDoctrine()->getEntityManager() ;

            $document->upload();
            $em->persist($document);
            $em->flush();

            return
            $this->render('MyUserBundle:Document:upload.html.twig');
        }
    }
            else
            {
             return
             $this->render('MyUserBundle:Document:upload.html.twig' ,array('form'=>$form->createView() );
            } 

заранее спасибо

1 Ответ

1 голос
/ 28 февраля 2012

Я думаю, вы создали папку uploads/cv по неверному пути.

Это должно быть project/web/uploads/cv, а не project/src/My/UserBundle/Resources/public/images.

Затем дайте Symfony права на запись в эту папку с помощью chmod.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...