Foros del Web » Programando para Internet » PHP » CodeIgniter »

[SOLUCIONADO] subir dos archivos desde un formulario en codeigniter

Estas en el tema de subir dos archivos desde un formulario en codeigniter en el foro de CodeIgniter en Foros del Web. Hola que tal amigos, hago este tema para pedir ayuda a la gente que conosca este framework. Resulta que cuando subo un archivo, solo uno, ...
  #1 (permalink)  
Antiguo 07/06/2018, 18:14
Avatar de freddy31DA  
Fecha de Ingreso: junio-2012
Mensajes: 84
Antigüedad: 6 años, 4 meses
Puntos: 2
Busqueda subir dos archivos desde un formulario en codeigniter

Hola que tal amigos, hago este tema para pedir ayuda a la gente que conosca este framework.
Resulta que cuando subo un archivo, solo uno, este se sube, pero cuando intento subir la imagen y el pdf, solo se sube la imagen al servidor y para el pdf termina lanzando un error:
Código PHP:
 http:/...../biblioteca/uploads/portadas/2672afdeee857f6ef282f7ffc16c6e4e.png
Error al subir el archivo PDF
:
El tipo de archivo que esta tratando de subir no está permitido
Este el código que esta dentro de la condición if($this->input->post()){ de el método "modificar" de mi controlador libro:
Código PHP:
    if($this->form_validation->run("libro/validar")){

                          
//determinar si actualizar portada
                                
if($_FILES['portada']['size']==0){
                                    
$portada $oldportada;
                                }else{
                                        
//procesar Portada
                                    
                                        //validar foto:
                                        
$config['upload_path'] = './uploads/portadas/';
                                        
$config['allowed_types'] = 'jpg|png|';
                                        
$config['max_size'] = '5200'//5Mb
                                        
$config['encrypt_name'] = TRUE;
                                        
$config['overwrite'] = FALSE;
                                        
$config['max_with'] = '1280';
                                        
$config['max_lenght'] = '720';
                    
                                        
//cargar libreria
                                        
$this->load->library('upload'$config);
                                        if(! 
$this->upload->do_upload('portada')){
                                             
$error = array('error' => $this->upload->display_errors());
                                             
//refrescar el formulario
                                             
$this->session->set_flashdata('ControllerMessage'$error["error"]);
                                             
//previamente se cargo la libreria session en autoload
                                             //Se a definido la key de session en config.php
                                        
}
                                        if(
$error==NULL){
                                                
//procesar datos Imagen
                                            
$img $this->upload->data();
                                            
$nombre_img $img['file_name'];
                                            
$portada base_url().'uploads/portadas/'.$nombre_img;
                                            echo 
$portada;
                                          
                                        }else{
                                           echo 
'Error Al subir la imagen: '.$error["error"];
                                           break;
                                        }
                                }
                                
                                
                                
//determinar si actualizar PDF
                                
if($_FILES['pdfnuevo']['size']==0){
                                    
$pdf $oldpdf;
                                }else{
                                        
//procesar Portada
                                    
                                        //validar foto:
                                        
$config['upload_path'] = './uploads/libros/';
                                        
$config['allowed_types'] = 'pdf';
                                        
$config['max_size'] = '100000'//kylobytes en MegaBytes = 100MB (100000 x 0.001) = 100Mb
                                        
$config['encrypt_name'] = TRUE;
                                        
$config['overwrite'] = FALSE;
                                        
//$config['max_with'] = '1280';
                                        //$config['max_lenght'] = '720';
                    
                                        //cargar libreria
                                        
$this->load->library('upload'$config);
                                        if(! 
$this->upload->do_upload('pdfnuevo')){
                                             
$error = array('error' => $this->upload->display_errors());
                                             
//refrescar el formulario
                                             
$this->session->set_flashdata('ControllerMessage'$error["error"]);
                                             
//previamente se cargo la libreria session en autoload
                                             //Se a definido la key de session en config.php
                                        
}
                                        if(
$error==NULL){
                                                
//procesar datos Imagen
                                            
$pdf_file $this->upload->data();
                                            
$nombre_pdf $pdf_file['file_name'];
                                            
$pdf base_url().'uploads/libros/'.$nombre_pdf;
                                            echo 
$pdf;
                                        }else{
                                           echo 
'Error al subir el archivo PDF: '.$error["error"];
                                           break;
                                        }
                                } 
La verdad no se que sucede, cuando intento subir los dos archivos, solo la imagen se sube y el pdf no, pero si intento subir solo un pdf, este si se sube.

Ya e revisado el archivo mimes.php que esta dentro del directorio "config" y ahi esta definido de que si se acepten archivos pdf:
'pdf' => array('application/pdf', 'application/x-download')

Por favor si alguien me da una sugerencia de que pueda hacer o me dice que esta mal , le agredesco.

PD: Tengo soluciones no muy recomendadas pero lo mejor es que el usuario modifique en un solo formulario ambos archivos. En el registro e considerado
que luego de registrar los datos del libro, excepto portada y pdf lo mando a otra
pagina para que ahi registre la portada primero, luego en la siguiente pagina, el pdf
asi me evitaria este problema actual. Sin embargo creo que no es optimo, por lo que
espero que me ayuden gracias.
__________________
Creo en Internet.
Amén.
  #2 (permalink)  
Antiguo 09/06/2018, 08:55
Avatar de freddy31DA  
Fecha de Ingreso: junio-2012
Mensajes: 84
Antigüedad: 6 años, 4 meses
Puntos: 2
Respuesta: subir dos archivos desde un formulario en codeigniter

Bueno, debido a que no e podido solucionar este método de subir dos archivos en una sola página lo que hice fue lo siguiente:
1. El formulario principal "modificar libro", el usuario modifica los datos básico del libro.
1.1 El usuario luego de haber terminado de llenar/modificar los campos del formulario, presiona el boton "modificar" para hacer la modificación en la base de datos, luego el sistema lo manda a otra página llamada "portada.php", en ella el usuario en vez de registrar, actualiza la portada del libro, puesto que en la base de datos la portada no es obligatoria.
2. El usuario selecciona la portada y presiona el boton actualizar portada, además tiene un boton que dice "omitir" en caso de no querer registrar la portada, de no ser así, hace click en actualizar
para que luego el sistema lo redireccione a la página "pdf.php" en ella puede actualizar el pdf para el libro modificado anteriormente, de no ser así, presiona el boton "cancelar". Así de esta manera es como he arreglado un problema de programación por una solución lógica.
--
Cuando se registra el libro, de igual forma tiene el formulario con campos basicos para el libro, luego de haber presionado registrar, lo redirecciono a la página portada, para que actualice la portada y luego el pdf.

Gracias.
__________________
Creo en Internet.
Amén.



La zona horaria es GMT -6. Ahora son las 13:06.