2015-04-28 3 views
0

Я пытаюсь сохранить файл .docx в базе данных mysql. Я знаю, что файлы .docx действительно являются файлом .zip. Тем не менее, я пытаюсь сохранить их в поле blob, поэтому должна быть какая-то разница.Symfony2 хранить файл docx в базе данных

Если я пытаюсь сохранить файл, который не является .docx, скажем .png, .jpeg, .pdf. все работает нормально, но когда я пытаюсь сохранить файл .docx, я получаю 500 в качестве ответа, без сообщения об ошибке.

Это мой код:

public function saveResumee($slug, $file) 
    { 
    $em = $this->getEntityManager(); 

    $resumee = new File(file_get_contents($file), $file->getMimeType(), $file->guessExtension(), $file->getClientSize()); 
    $em->persist($resumee); 
    $em->flush(); // Everything blows up here! 
    ... 

    return true; 
    } 

Вот мой File Entity

<?php 

namespace DnD\RaHApiBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* File 
* 
* @ORM\Table() 
* @ORM\Entity 
*/ 
class File 
{ 

    public function __construct($data, $type, $extension, $length) 
    { 

    $this->data = $data; 
    $this->type = $type; 
    $this->extension = $extension; 

    if ($length) $this->length = $length; 
    } 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="data", type="blob") 
    */ 
    private $data; 

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

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

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


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

    /** 
    * Set data 
    * 
    * @param string $data 
    * @return File 
    */ 
    public function setData($data) 
    { 
    $this->data = $data; 

    return $this; 
    } 

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

    /** 
    * Set length 
    * 
    * @param integer $length 
    * @return File 
    */ 
    public function setLength($length) 
    { 
    $this->length = $length; 

    return $this; 
    } 

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

    /** 
    * Set type 
    * 
    * @param string $type 
    * @return File 
    */ 
    public function setType($type) 
    { 
    $this->type = $type; 

    return $this; 
    } 

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

    /** 
    * @return string 
    */ 
    public function getExtension() 
    { 
    return $this->extension; 
    } 

    /** 
    * @param string $extension 
    */ 
    public function setExtension($extension) 
    { 
    $this->extension = $extension; 
    } 
} 

Что не так с этим?

+1

Опубликовать определение полей таблицы, у вас может возникнуть проблема с полем длины – sdespont

+0

@sdespont только что обновил мой вопрос – danielrvt

+1

Вы заглянули в файл журнала? Попробуйте в режиме dev, чтобы получить более подробную информацию. – sdespont

ответ

1

Хорошо, я наконец-то получил его на работу.

Как @sdespont упоминалось выше, это была проблема длина, тип мим из .docx файла его очень большой, поэтому я просто обновил это поле от этого:

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

Для этого:

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

Ваши два примера кода точно такие же ... – edi9999

+0

Вы правы! Просто исправил это – danielrvt

Смежные вопросы