Welcome to the Cookbook

loading...

3.10.6 Vistas de Medios

El texto original ha cambiado despues que la traduccion. Por favor ayundanos a reslover este differencia. Puedes:

Mas info sobre traduciones

Las vistas de medios te permiten enviar archivos binarios al usuario. Por ejemplo, quizá deseas tener un directorio de archivos fuera de la carpeta /webroot para prevenir que los usuarios tengan acceso directo a ellos. Puedes usar vistas Media para traer el archivo desde una carpeta especial dentro de /app/, pudiendo hacer autenticación antes de entregar el archivo al usuario.

Para usar vistas Media, necesitas decirle a tu controlador que use la clase MediaView en vez de la clase por defecto View. Después de esto, sólo pasa los parámetros adicionales para especificar dónde está ubicado tu archivo.

class EjemploController extends AppController {
    function download () {
        $this->view = 'Media';
        $params = array(
              'id' => 'ejemplo.zip',
              'name' => 'ejemplo',
              'download' => true,
              'extension' => 'zip',
              'path' => 'files' . DS
       );
       $this->set($params);
    }
}
  1. class EjemploController extends AppController {
  2. function download () {
  3. $this->view = 'Media';
  4. $params = array(
  5. 'id' => 'ejemplo.zip',
  6. 'name' => 'ejemplo',
  7. 'download' => true,
  8. 'extension' => 'zip',
  9. 'path' => 'files' . DS
  10. );
  11. $this->set($params);
  12. }
  13. }

Aquí tenemos un ejemplo de una descarga de un archivo cuyo tipo MIME no está incluido en el array $mimeType de la clase MediaView.

function download () {
    $this->view = 'Media';
    $params = array(
          'id' => 'example.docx',
          'name' => 'example',
          'extension' => 'docx',
          'mimeType' => array('docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
          'path' => APP . 'files' . DS
   );
   $this->set($params);
}

  1. function download () {
  2. $this->view = 'Media';
  3. $params = array(
  4. 'id' => 'example.docx',
  5. 'name' => 'example',
  6. 'extension' => 'docx',
  7. 'mimeType' => array('docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'),
  8. 'path' => APP . 'files' . DS
  9. );
  10. $this->set($params);
  11. }
ParámetrosDescripción
idEl ID es el nombre del archivo tal como está en el servidor, incluyendo su extensión.
nameEl nombre (name) te permite especificar un nombre de archivo alternativo para ser enviado al usuario. Especifica el nombre sin la extensión del archivo.
downloadUn valor booleano que indica si los encabezados deben forzar la descarga.
extensionLa extensión del archivo. Esto se compara con una lista interna de tipos MIME aceptados. Si el tipo MIME especificado no está en la lista, el archivo no será descargado.
pathEl nombre del archivo, incluyendo el separador del directorio final. La ruta (path es relativa a la carpeta app/.
mimeTypeUn arreglo con tipos MIME adicionales que serán mezclados con la lista interna de tipos MIME aceptados.