Symfony2 сохранить файл DOCX в базе данных

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

Если я пытаюсь сохранить файл, который не .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 сущность

<?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;
}
}

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

0

Решение

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

Как упоминалось выше @sdespont, это была проблема длины, тип mime .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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]