Foros del Web » Programando para Internet » PHP »

insertar mas de una imagen con su ruta

Estas en el tema de insertar mas de una imagen con su ruta en el foro de PHP en Foros del Web. Hola chicos, hace unos dias encontre la forma de insertar la ruta de una imagen, pero yo quisiera saber si se puede hacer lo mismo ...
  #1 (permalink)  
Antiguo 19/11/2015, 11:45
 
Fecha de Ingreso: julio-2015
Ubicación: Lima
Mensajes: 23
Antigüedad: 8 años, 9 meses
Puntos: 0
insertar mas de una imagen con su ruta

Hola chicos, hace unos dias encontre la forma de insertar la ruta de una imagen, pero yo quisiera saber si se puede hacer lo mismo con 2, 3, 4 imagenes más.

aca esta el formulario:

<form id="formulario" action="php/subir.php" method="POST" enctype="multipart/form-data">
<div class="campos">
<label > Nick </label>
<input type="text" name="nombre" required/>
</div>

<div class="campos">
<label> Mail </label>
<input type="email" name="email" required/>
</div>

<div class="campos">
<label> Edad </label>
<input type="text" name="edad" required/>
</div>

<div class="campos">
<label for="imagen">Imagen:</label>
<input type="file" name="hugo" id="imagen" />
<input type="submit" name="subir" value="Subir"/>
</div>
</form>

subir.php

<?php

include('myDBC.php');
//Definir Tamaño de archivo 5MB
define('LIMITE', 5000);
//Definir arreglo con extensiones permitidas usar serialize
define('ARREGLO', serialize( array('image/jpg', 'image/jpeg', 'image/gif','image/png')));

$PERMITIDOS = unserialize(ARREGLO); //Usar unserialize para obtener el arreglo

$subirInformacion = new myDBC(); //Objeto para conexión a BD

if ($_FILES["hugo"]["error"] > 0){
echo'<script type="text/javascript">
alert("Error de FILE Selecciona un Archivo");
window.location="http://localhost/index.php"
</script>';
}
else {

if (in_array($_FILES['hugo']['type'], $PERMITIDOS) && $_FILES['hugo']['size'] <= LIMITE * 1024){

//Desde subir.php a la carpeta imagenes hay que salir un directorio
//../imagenes/nombreDeArchivo
$rutaEnServidor = "../imagenes/" . $_FILES['hugo']['name'];

//Desde index.php, la carpeta imagenes está en imagenes/nombreDeArchivo
$ruta = "imagenes/" . $_FILES['hugo']['name'];

if (!file_exists($ruta)){
$resultado = move_uploaded_file($_FILES["hugo"]["tmp_name"], $rutaEnServidor);
if ($resultado){
$name = $_POST['nombre'];
$ema = $_POST['email'];
$ed = $_POST['edad'];
$subirInformacion->subirTodo($name, $ema, $ed, $ruta);

}else {
echo'<script type="text/javascript">
alert("Ocurrió un error al mover archivo");
window.location="http://localhost/index.php"
</script>';
}
}

?>

insertando datos

<?php
class myDBC{

public $mysqli=null;

public function __construct(){

include_once 'conexion.php';
$this->mysqli = new mysqli($servername, $username, $password, $dbname);

if ($this->mysqli->connect_errno){
echo "Error MySQLi: ("&nbsp. $this->mysqli->connect_errno.") " . $this->mysqli->connect_error;
exit();
}
$this->mysqli->set_charset("utf8");
}
public function subirTodo($nombre, $email, $edad, $ruta){

$q = "INSERT INTO imagenes (nombre, email, edad, ruta) VALUES ('$nombre', '$email', '$edad', '$ruta')";
$result = $this->mysqli->query($q);

if($result){ //Si resultado es true, se agregó correctamente
echo'<script type="text/javascript">
alert("Agregado Exitosamente a la BD");
window.location="http://localhost/index.php"
</script>';
}
else{ //Si hubo error al insertar, se avisa
echo'<script type="text/javascript">
alert("Chispas... Algo anda mal");
window.location="http://localhost/ndex.php"
</script>';
}

}

Bueno, si a alguien le sirve genial. Si saben como insertar multiples imagenes a este codigo, se lo agradeceria mucho.
Saludos
  #2 (permalink)  
Antiguo 19/11/2015, 11:55
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: insertar mas de una imagen con su ruta

Saludo
Si es posible, es manejar un array de campos para las imagenes,
o n campos file individuales, ya es como mejor se quiera realizar,
aunque para el recorrido cuando lleguen al server serìa mucho mejor
hacerlo de modo array.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 19/11/2015, 13:06
 
Fecha de Ingreso: abril-2015
Ubicación: Bogotá D.C - Colombia
Mensajes: 106
Antigüedad: 9 años
Puntos: 11
Respuesta: insertar mas de una imagen con su ruta

Te he preparado un ejemplo muy básico usando la estructura general que tengo para la subida de archivos de mis proyectos:

Archivo Ejemplo-files.html
Código HTML:
Ver original
  1.     <head>
  2.         <title>TODO supply a title</title>
  3.         <meta charset="UTF-8">
  4.         <meta name="viewport" content="width=device-width, initial-scale=1.0">
  5.     </head>
  6.     <body>
  7.         <form enctype="multipart/form-data" method="POST" action="Uploads.php">                                                
  8.             <input id="file-1" name="archivos[]" type="file" multiple>
  9.             <input type="submit" />
  10.         </form>
  11.     </body>
  12. </html>

Archivo Uploads.php
el cual contiene una estructurá completa, valida si se reciben datos, valida extenciones, comprueba existencia de archivos y te da opciones de edición muy sencilla, además lo he comentado... el resultado que devuelve es un objeto JSON con todos los datos de cada archivo subido, tales como nombre, ruta donde se guardo, tamaño del archivo y si es pdf el número de páginas del mismo, así que si estas trabajando con peticiones AJAX no tienes que hacer el trabajo de construir el objeto....

espero que te sirva:
Código PHP:
Ver original
  1. <?php
  2.  
  3. $response = array();
  4.  
  5. //solo se puede acceder si es una peticion post
  6. if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  7. //array de campos file del formulario
  8.     $files = $_FILES['archivos']['name'];
  9.     //creamos una instancia de la clase multiupload
  10.     $upload = new Multiupload();
  11.     //llamamos a la funcion upFiles y le pasamos el array de campos file del formulario
  12.     $isUpload = $upload->upFiles($files);
  13. } else {
  14.     $response['code'] = -1;
  15.     $response['message'] = "No se enviaron archivos.";
  16. }
  17.  
  18. /**
  19.  * Description of Multiupload.php
  20.  *
  21.  * @author jhonjaider1000
  22.  */
  23. class Multiupload {
  24.  
  25.     var $directory = "uploads/"; //Directorio para guardar los archivos, si no existe el script lo crea.
  26.     var $response = array();
  27.     var $extensiones = array("jpg", "png", "gif", "bmp", "pdf",); //Extenciones permitidas.
  28.  
  29.     /**
  30.      * sube archivos al servidor a través de un formulario
  31.      * @access public
  32.      * @param array $files estructura de array con todos los archivos a subir
  33.      */
  34.  
  35.     public function upFiles($files = array()) {
  36.         //inicializamos un contador para recorrer los archivos
  37.         $i = 0;
  38.         //si no existe la carpeta, la creamos...
  39.         if (!is_dir($this->directory)) {
  40.             mkdir($this->directory, 0777);
  41.             if (DIRECTORY_SEPARATOR == "/") {
  42.                 chmod($this->directory, 0777);
  43.             }
  44.         }
  45.         $cont = 0;
  46.         //recorremos los input files del formulario
  47.         foreach ($files as $file) {
  48.             if ($_FILES['archivos']['tmp_name'][$i]) {
  49.                 //separamos los trozos del archivo, nombre extension
  50.                 $trozos[$i] = explode(".", $_FILES["archivos"]["name"][$i]);
  51.                 //obtenemos la extension
  52.                 $extension[$i] = end($trozos[$i]);
  53.                 //SE PREPARAN LOS DETALLES DEL ARCHIVO...
  54.                 $archive = array();
  55.                 $archive['datos']['rutaArchivo'] = null; //La ruta solo se parametrizará si se logra subir el archivo más adelante.
  56.                 $archive['datos']['nombreArchivo'] = $_FILES['archivos']['name'][$i];
  57.                 $archive['datos']['tamanioArchivo'] = $_FILES['archivos']['size'][$i];
  58.                 $ext = explode('.', $_FILES['archivos']['name'][$i]);
  59.                 $ext = end($ext);
  60.                 if ($ext == "pdf") {
  61.                     $archive['datos']['numPages'] = getNumPagesPDF($this->directory . $_FILES['archivos']['name'][$i]);
  62.                 } else {
  63.                     $archive['datos']['numPages'] = 0;
  64.                 }
  65.  
  66.                 //si la extensión es una de las permitidas
  67.                 if ($this->checkExtension($extension[$i]) === TRUE) {
  68.                     //comprobamos si el archivo existe o no, si existe renombramos
  69.                     //para evitar que sean eliminados
  70.                     $_FILES['archivos']['nameDefault'][$i] = $_FILES['archivos']['name'][$i];
  71.                     $_FILES['archivos']['name'][$i] = $this->checkExists($trozos[$i]);
  72.                     //comprobamos si el archivo ha subido
  73.                     if (move_uploaded_file($_FILES['archivos']['tmp_name'][$i], $this->directory . $_FILES['archivos']['name'][$i])) {
  74.                         //Se cambian los permisos del archivo, para que se puedan editar, eliminar y demás si se está usando linux.
  75.                         if (DIRECTORY_SEPARATOR == "/") {
  76.                             chmod($this->directory . $_FILES['archivos']['name'][$i], 0777);
  77.                         }
  78.                         $archive['datos']['rutaArchivo'] = $this->directory . $_FILES['archivos']['name'][$i];
  79.                         //Si se desea agregar el archivo y sus detalles a la base de datos
  80.                         //este sería el punto perfecto para hacerlo...
  81.                         $archive['codigo'] = 1;
  82.                         $archive['mensaje'] = "Se ha subido el archivo correctamente.";
  83.                         //Se agrega la respuesta y detalles del archivo subido.
  84.                         array_push($this->response, $archive);
  85.                     } else {
  86.                         $archive['codigo'] = -1;
  87.                         $archive['mensaje'] = "No se pudo subir el archivo.";
  88.                     }
  89.                     //si la extension no es una de las permitidas
  90.                 } else {
  91.                     $archive['codigo'] = -1;
  92.                     $archive['mensaje'] = "Extención inválida.";
  93.                     //ACCIÓN A EJECUTAR SI LA EXTENCIÓN ES INVÁLIDA.
  94.                 }
  95.                 //si ese input file no ha sido cargado con un archivo
  96.             } else {
  97.                
  98.             }
  99.             //echo "<br />";
  100.             //en cada pasada por el loop incrementamos i para acceder al siguiente archivo                    
  101.             $i++;
  102.         }
  103.  
  104.         echo json_encode($this->response);
  105.     }
  106.  
  107.     /**
  108.      * funcion privada que devuelve true o false dependiendo de la extension
  109.      * @access private
  110.      * @param string
  111.      * @return boolean - si esta o no permitido el tipo de archivo
  112.      */
  113.     private function checkExtension($extension) {
  114.         if (in_array(strtolower($extension), $this->extensiones)) {
  115.             return TRUE;
  116.         } else {
  117.             return FALSE;
  118.         }
  119.     }
  120.  
  121.     /**
  122.      * funcion que asigna un nombre al archivo y comprueba si existe.
  123.      * @access private
  124.      * @param array
  125.      * @return array - archivo con el nuevo nombre
  126.      */
  127.     //Si no se desea que esta función cambie el archivo ni nada por el estilo, solo
  128.     //se debe retornar el mismo nombre recibido, aunque recomiendo que se compruebe
  129.     //la existencia del archivo y se use el $i como un modificador que le
  130.     //de un nombre de tipo file(1), file(2)...
  131.     private function checkExists($file) {
  132.         //asignamos de nuevo el nombre al archivo
  133.         $archivo = md5(uniqid(rand())) . '_file' . '.' . end($file);
  134.         $i = 0;
  135.         //mientras el archivo exista entramos
  136.         while (file_exists($this->directory . $archivo)) {
  137.             $i++;
  138.             $archivo = md5(uniqid(rand())) . '_file' . '.' . end($file);
  139.         }
  140.         return $archivo;
  141.     }
  142.  
  143. }
  144.  
  145. //Esta función retorna el número de páginas de un pdf.
  146. function getNumPagesPDF($filePath) {
  147.     if (!file_exists($filePath))
  148.         return 0;
  149.     if (!$fp = @fopen($filePath, "r"))
  150.         return 0;
  151.     $i = 0;
  152.     $type = "/Contents";
  153.     while (!feof($fp)) {
  154.         $line = fgets($fp, 255);
  155.         $x = explode($type, $line);
  156.         if (count($x) > 1) {
  157.             $i++;
  158.         }
  159.     }
  160.     fclose($fp);
  161.     return (int) $i;
  162. }
  163. ?>


Éxitos!

Última edición por jhonjaider1000; 19/11/2015 a las 13:14

Etiquetas: formulario, mysql, ruta, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:41.