Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Entidades para diferentes tipos de archivo

17 de abril de 2014

Hola tengo una pregunta:

Tengo una página que contiene entidades con diferentes tipos de medios: imagen, audio, video. ¿Me conviene hacer esas últimas entidades o mejor utilizar el vendor media?

¿Cómo sería para que me funcione la BBDD de las entidades si utilizo el bundle de Symfony?


Respuestas

#1

Técnicamente es posible guardar archivos multimedia en la base de datos a través de las entidades Doctrine. Pero debes tener en cuenta que por razones de rendimiento, mucha gente desaconseja guardar este tipo de archivos en la base de datos, sobre todo cuando hay muchos archivos y son muy grandes.

En la documentación oficial de Symfony se incluye un artículo llamado How to handle File Uploads with Doctrine que explica cómo subir archivos y gestionarlos con Doctrine, pero sin guardarlos directamente en la base de datos.

Por otra parte, existen varios bundles de Symfony2 para el manejo de los archivos binarios: VlabsMediaBundle, SonataMediaBundle y OryzoneMediaStorageBundle.

@javiereguiluz

17 abril 2014, 8:32
#2

Gracias por responderme. Ya que no tengo que hacer las entidades, ¿debería solamente declararlos como atributos de tipo file? Esto tengo entendido que carga de a uno a la vez.

Si, vi el bundle de Sonata, pero leí que no es compatible con versiones mayores al 2.0. ¿esto es cierto? Agradecería que me aclares esta duda. Gracias

@rut1919

19 abril 2014, 4:42
#3

Efectivamente, tal y como explica el artículo de la documentación de Symfony, hay que hacer una combinación entre campos virtuales de tipo File y propiedades de tipo string donde se guardará la ruta del archivo subido.

Existe otro bundle para el manejo de este tipo de archivos y que se me olvidó comentarte en la anterior respuesta. El bundle se llama KunstmaanMediaBundle y al parecer es más fácil de usar y de instalar que los otros.

@javiereguiluz

19 abril 2014, 9:04
#4

Está bien. Creo que me conviene usar un bundle de Symfony en vez de hacer una entidad por cada tipo de archivo. ¿Ese bundle entonces es compatible con versiones superiores al 2.1?

Tengo una consulta: si yo tengo contenido de tipo archivo en otra base de datos, ¿puedo importarla de alguna manera a mi proyecto? Gracias por las respuestas, muy útiles.

@rut1919

21 abril 2014, 4:15
#5

Contestando a tus preguntas:

"Ese bundle entonces es compatible con versiones superiores al 2.1?"

Si, no tendrás problemas para usarlo con las versiones más recientes de Symfony.

"¿puedo importarla de alguna manera a mi proyecto?"

Si estás pensando en un comando más o menos automático que te haga la importación, me temo que no vas a poder contar con ello. Lo que tendrías que hacerte es un pequeño script de PHP que lea los contenidos de la vieja base de datos y lo guarde en el sistema de archivos. Así que en la nueva base de datos sólo guardarías la ruta y/o el nombre de cada archivo multimedia, pero no sus contenidos.

@javiereguiluz

21 abril 2014, 9:51
#6

Ok y el contenido ¿dónde se guarda? ¿Dónde queda almacenado?

@rut1919

21 abril 2014, 23:53
#7

Al querer instalar el bundle me dice esto en la página de instalación:

En Windows: le sugerimos amablemente la instalación de [VirtualBox] [11],
[VMware] [12] u otra plataforma de virtualización y ejecutar un Linux

¿Si o si tengo que virtualizarlo? Además se debe crear un proyecto ¿el path es mi proyecto o fuera del mismo?

$ php composer.phar create-project kunstmaan/bundles-standard-edition path/to/install
 
// by using -s dev you can get the version based on Symfony 2.4
$ php composer.phar create-project kunstmaan/bundles-standard-edition path/to/install -s dev
Composer will install the Kunstmaan Bundles CMS and all its dependencies under
the path/to/install directory, and ask for some basic configuration settings
(ie. database settings), you can leave the other settings at their default values.

@rut1919

22 abril 2014, 0:30
#8

Por lo que veo debo instalar muchos paquetes y lo que necesito es una herramienta que yo pueda insertar más de un archivo de tipo media, cualquiera sea (audio,video,imagen) en entidades. Yo había pensado poner el campo file y tener un array de esos, porque ¿puede pasar que necesite más de uno en una misma entidad? Con esto: ¿qué me conviene hacer?


Minimal requirements for the Kunstmaan Bundles CMS

Since we use the Symfony framework, the minimal requirements of Symfony apply, so:

  • PHP needs to be a minimum version of PHP 5.3.3
  • JSON needs to be enabled
  • ctype needs to be enabled
  • Your PHP.ini needs to have the date.timezone setting

Apart from these you will also need the following:

  • Node.js
  • Sass
  • Bower
  • Grunt
  • a database server, preferrably MySQL 5.x (we haven't tried any other DB yet...)
  • a web server...

To install the required dependencies (apart from the database and web server):

On OS X (using Homebrew):

brew install node
gem install sass # maybe you need sudo...
npm install -g bower
npm install -g grunt

On Linux (Debian / Ubuntu):

sudo apt-get install node
gem install sass # maybe you need sudo...
npm install -g bower
npm install -g grunt

On Windows:

We kindly suggest installing [VirtualBox][11], [VMware][12] or another virtualization platform and running a Linux VM on it, or basically : you're on your own.

@rut1919

22 abril 2014, 0:58
#9

Siempre es normal tener dudas antes de hacer un proyecto de este tipo. Mi recomendación es que te leas bien el artículo How to handle File Uploads with Doctrine y pruebes a hacerlo en tu proyecto. Así verás cómo subir un archivo mediante una aplicación Symfony2 y seguramente entenderás por qué no lo guardan en la base de datos y cómo hacen para no guardarlo. Después creo que tendrás todo mucho más claro.

Empezar directamente con los bundles de Kunstmaan creo que es un error.

@javiereguiluz

23 abril 2014, 0:32
#10

Por lo que estuve leyendo y viendo en foros..tendria que hacer una coleccion de files..entonces si yo necesito que mi entidad articulo tenga un campo para subir uno mas videos, por ejemplo, lo mas conveniente es crear la entidad del tipo video y relacionarlo con el campo de la entidad articulo..ahi yo podria cargar mas a de un video a la vez..esa es mi duda..si hacer arreglo de files simples o lo anterior..Se tiene que configurar algo en el php.ini para que me deje cargar mas de 2 archivos a la vez..gracias espero tu respuesta..-

@rut1919

24 abril 2014, 22:04