Я пытаюсь сохранить .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;
}
}
Что не так с этим?
Хорошо, я наконец-то получил его на работу.
Как упоминалось выше @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;
Других решений пока нет …