Diferenciar entre carga de video e imagen en CodeIgniter

Puedo cargar una imagen o un video desde mi archivo. He configurado el archivo de configuración para la imagen de la siguiente manera:

        $config['upload_path'] = './docs/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '200';
        $config['max_width']  = '250';
        $config['max_height']  = '250';
        $config['file_name']  = md5(rand().time());

        $this -> load -> library('upload', $config);

Pero cuando suba un video, esta configuración no funcionará porque necesito poder cargar un archivo (video) de un tamaño mucho mayor. ¿Hay alguna forma después de enviar para averiguar lo que he subido ( img/video ) y, en base a eso, puedo habilitar el archivo de configuración?

La configuración para video es la siguiente:

            $configVideo['upload_path'] = './docs/';
            $configVideo['max_size'] = '50240';
            $configVideo['allowed_types'] = 'avi|flv|wmv|mp3|wma';
            $configVideo['overwrite'] = FALSE;
            $configVideo['remove_spaces'] = TRUE;
            $video_name = $date.$_FILES['video']['name'];
            $configVideo['file_name'] = $video_name;

            $this->load->library('upload', $configVideo);
            $this->upload->initialize($configVideo);

preguntado el 12 de junio de 12 a las 08:06

1 Respuestas

Puede usar el $ _FILES para averiguar el tipo primero. no probado

$type = $_FILES['userfile']['type'];
switch ($type) {
   case 'gif':
   case 'jpg':
   case 'png':
      // do img config setup
      break;
   case 'avi':
   case 'flv':
   case 'wmv':
   case 'mp3':
   case 'wma':
      // do video config
      break;
}

O si usa diferentes nombres para los archivos en el formulario, ¿por qué no intentarlo?

[actualizado]

$config['upload_path'] = './docs/';
if (is_array($_FILES) && isset($_FILES['image']['name'])) {
    // is an image
    $config['upload_path'] = './docs/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size'] = '200';
    $config['max_width']  = '250';
    $config['max_height']  = '250';
    $config['file_name']  = md5(rand().time());
} elseif (is_array($_FILES) && isset($_FILES['video']['name'])) {
    // is a video
    $config['max_size'] = '50240';
    $config['allowed_types'] = 'avi|flv|wmv|mp3|wma';
    $config['overwrite'] = FALSE;
    $config['remove_spaces'] = TRUE;
    $video_name = $date.$_FILES['video']['name'];
    $config['file_name'] = $video_name;
}

$this->load->library('upload', $config);
$this->upload->initialize($config);

Respondido el 12 de junio de 12 a las 08:06

Hola, gracias por la respuesta. Todavía estoy atascado en el problema En la vista, el nombre del archivo de video es video y el nombre del archivo de imagen es imagen. ¿Cómo lo obtengo en el controlador y luego establezco la configuración? Todavía estoy aprendiendo. Por favor, ayúdame. Gracias una vez más por la respuesta. - shashi-roy

He agregado algunos bits adicionales al segundo ejemplo de código (ver actualizado). $esto ejecutará la biblioteca de carga con la configuración correcta. - Rooney

Muchas gracias de nuevo. Cuando trato de mostrar usando echo $config['file_name'] ; arroja un error: Mensaje: Índice indefinido: nombre_archivo. ¿Cuál puede ser el posible error? - shashi-roy

¿Dónde estás tratando de hacer eco del nombre del archivo? - Rooney

Estoy tratando de repetirlo en el controlador mismo. Justo después de cargar la biblioteca, he comentado la línea de carga-> vista para poder ver el resultado. :( - shashi-roy

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.