Foros del Web » Programando para Internet » PHP »

Formulario con archivos adjuntos

Estas en el tema de Formulario con archivos adjuntos en el foro de PHP en Foros del Web. Hola! Estoy realizando un formulario en PHP para enviar archivos adjuntos. El formulario funciona correctamente para el envío de un solo archivo pero yo necesito ...
  #1 (permalink)  
Antiguo 07/08/2018, 05:44
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 11 años, 8 meses
Puntos: 12
Formulario con archivos adjuntos

Hola! Estoy realizando un formulario en PHP para enviar archivos adjuntos. El formulario funciona correctamente para el envío de un solo archivo pero yo necesito que se puedan enviar hasta 3. ¿Alguna idea de cómo agregar el segundo? Lo intenté pero no he podido. Dejo mi código.

formulario.html

Código HTML:
<body>
		<form method="post" action="enviar.php" enctype="multipart/form-data">
				<br>
				<h3>Datos de la Propiedad</h3>
				<div class="form-group row">
                    <div class="col-md-6 margen">
                        <input class="form-control" type="text" id="direccion" name="direccion" 
						placeholder="Dirección" data-toggle="tooltip" data-placement="top">
                    </div>
                    <div class="col-md-6">
                        <input class="form-control" type="text" id="barrio" name="barrio" 
						placeholder="Barrio" data-toggle="tooltip" data-placement="top">
                    </div>
                </div>
						                    <div class="col-md-4">
                        <select class="form-control" onchange="change_country(this.value)" class="frm-field required"  id="ambientes" name="ambientes" 
						placeholder="Ambientes" data-toggle="tooltip" data-placement="top">
							<option value="null">Ambientes</option>
							<option value="1">1</option>
							<option value="2">2</option>
						</select>
                    </div>
				</div>
                <div class="form-group row">
                    <div class="col-md-12">
                        <textarea class="form-control" rows="4" id="descripcion" name="descripcion" 
						placeholder="Descripción" data-toggle="tooltip" data-placement="top" title="Ingrese su mensaje"></textarea>
                    </div>
                </div>
				<br>
				<h3>Fotos</h3>
				<div class="form-group row">
                    <div class="col-md-3 margen-img">
                        <input class="form-control" type="file" id="archivo" name="archivo" 
						placeholder="Foto 1" data-toggle="tooltip" data-placement="top">
                    </div>
                    <div class="col-md-3 margen-img">
                        <input class="form-control" type="file" id="foto2" name="foto2" 
						placeholder="Foto 2" data-toggle="tooltip" data-placement="top">
                    </div>
                    <div class="col-md-3 margen-img">
                        <input class="form-control" type="file" id="foto3" name="foto3" 
						placeholder="Foto 3" data-toggle="tooltip" data-placement="top">
                    </div>
  
				</div> <br>
				<h3>Datos de Contacto</h3>
                <div class="form-group row">
                    <div class="col-md-4 margen">
                        <input class="form-control" type="text" id="nombre" name="nombre" 
						placeholder="Nombre y Apellido" data-toggle="tooltip" data-placement="top">
                    </div>
                    <div class="col-md-4 margen">
                        <input class="form-control" type="text" id="telefono" name="telefono" 
						placeholder="Teléfono" data-toggle="tooltip" data-placement="top">
                    </div>
                    <div class="col-md-4">
                        <input class="form-control" type="text" id="email" name="email" 
						placeholder="E-mail" data-toggle="tooltip" data-placement="top">
                    </div>
                </div>

                <div class="form-group row">
                    <div class="col-md-12">
                        <button type="submit" class="btn btn-success btn-lg btn-block">Enviar Propiedad</button>
                    </div>
                </div>
            </form>	
		</div>
	</div>
</body> 
envio.php
Código PHP:
<?php
if(isset($_POST['email'])) {
     

    
$email_to "[email protected]"
    
$email_subject "Nueva Solicitud de Tasación Recibida";
     
     
    function 
died($error) {
       
        echo 
"Se encontró un error en el formulario enviado. ";
        echo 
$error."<br /><br />";
        die();
    }
     
    
    if(!isset(
$_POST['nombre']) ||
        !isset(
$_POST['direccion']) ||
        !isset(
$_POST['email']) ||
        !isset(
$_POST['telefono']) ||
        !isset(
$_POST['barrio']) ||
        !isset(
$_FILES['archivo']['name'])||
        !isset(
$_FILES['foto2']['name'])){
        
died('Lo sentimos, pero hubo un error(es) encontrado en el formulario que se quizo cotizar.');       
    }
    
    
$nombre $_POST['nombre'];
    
$ruc $_POST['direccion'];
$ambientes $_POST['ambientes'];
    
$email_from $_POST['email']; 
    
$telefono $_POST['telefono'];
    
$cargo $_POST['barrio']; 
    
$mensaje $_POST['descripcion'];  

    
$error_message "";
    
$email_exp '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
    
$string_exp "/^[A-Za-z .'-]+$/";

   
    
$nombrearchivo $_FILES['archivo']['name'];
    
$archivo $_FILES['archivo']['tmp_name'];


    
    
$archivo file_get_contents($archivo);
    
$archivo chunk_split(base64_encode($archivo));

   
     
        function 
clean_string($string) {
      
$bad = array("content-type","bcc:","to:","cc:","href");
      return 
str_replace($bad,"",$string);
    }
    
    
$CuerpoMensaje .= "Nombre: ".clean_string($nombre)."\r\n";
    
$CuerpoMensaje .= "Email: ".clean_string($email_from)."\r\n";    
    
$CuerpoMensaje .= "Telefono: ".clean_string($telefono)."\r\n";
    
$CuerpoMensaje .= "Direccion: ".clean_string($ruc)."\r\n";
    
$CuerpoMensaje .= "Barrio: ".clean_string($cargo)."\r\n";
   
$CuerpoMensaje .= "Ambientes: ".clean_string($ambientes)."\r\n";
   
$CuerpoMensaje .= "Mensaje: ".clean_string($mensaje)."\r\n";
      
    

    
$headers "From: XXXX <" $email_from ">\r\n";
    
$headers .= "MIME-Version: 1.0\r\n";
    
$headers .= "Content-Type: multipart/mixed; boundary=\"=A=G=R=O=\"\r\n\r\n";
    
    

    
$email_message "--=A=G=R=O=\r\n";
    
$email_message .= "Content-type:text/plain; charset=utf-8\r\n";
    
$email_message .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
    
$email_message .= $CuerpoMensaje "\r\n\r\n";
    
  
    
$email_message .= "--=A=G=R=O=\r\n";
    
$email_message .= "Content-Type: application/octet-stream; name=\"" $nombrearchivo "\"\r\n";
    
$email_message .= "Content-Transfer-Encoding: base64\r\n";
    
$email_message .= "Content-Disposition: attachment; filename=\"" $nombrearchivo "\"\r\n\r\n";
    
$email_message .= $archivo "\r\n\r\n";
    
$email_message .= "--=A=G=R=O=--";

    
    

    
mail($email_to$email_subject$email_message$headers);
    
    
}
    
    
?>
¿Alguna idea?
Muchas gracias.
  #2 (permalink)  
Antiguo 07/08/2018, 11:54
 
Fecha de Ingreso: abril-2006
Mensajes: 434
Antigüedad: 14 años, 2 meses
Puntos: 98
Respuesta: Formulario con archivos adjuntos

solo usa el input en formato array
Código HTML:
Ver original
  1. <input class="form-control" type="file" id="archivo" name="archivo" />
cambialo por
Código HTML:
Ver original
  1. <input class="form-control" type="file" id="archivo" name="archivo[]" />

con eso podras enviar cuantos archivos quieras por via POST, en el lado de php solo cambia un poco la estructura puedes revisar ,hay multitud de ejemplos en la web
  #3 (permalink)  
Antiguo 08/08/2018, 06:30
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 11 años, 8 meses
Puntos: 12
Respuesta: Formulario con archivos adjuntos

Gracias pero no parece funcionar de ese modo, ya lo he intentado. El tema es que son 3 campos diferentes (uno por archivo), por eso le había puesto nombres distintos.
  #4 (permalink)  
Antiguo 08/08/2018, 08:45
 
Fecha de Ingreso: abril-2006
Mensajes: 434
Antigüedad: 14 años, 2 meses
Puntos: 98
Respuesta: Formulario con archivos adjuntos

Cita:
Iniciado por sjj Ver Mensaje
Gracias pero no parece funcionar de ese modo, ya lo he intentado. El tema es que son 3 campos diferentes (uno por archivo), por eso le había puesto nombres distintos.
bueno solo queda entonces definir que tu servidor no soporta subida de archivos o los archivos que intenas subir, superan la memoria ram asignada en la configuracion de php

en tu archivo

"enviar.php"

agrega esta linea de codigo

Código PHP:
<?php
var_dump
($_FILES);
ello deberia mostrarte el contenido de FILES; para ver si le llegan los valores
  #5 (permalink)  
Antiguo 13/08/2018, 13:47
Avatar de alvidales  
Fecha de Ingreso: febrero-2012
Mensajes: 108
Antigüedad: 8 años, 4 meses
Puntos: 11
Respuesta: Formulario con archivos adjuntos

Cita:
Iniciado por sjj Ver Mensaje
Gracias pero no parece funcionar de ese modo, ya lo he intentado. El tema es que son 3 campos diferentes (uno por archivo), por eso le había puesto nombres distintos.
Es por eso que te indica que pongas archivo[] en el name a los 3 para que te cree un arreglo el POST, esto se lo tienes que poner a cada uno de los campos y automáticamente te generara el arreglo y vas a recibirlo con 3 elementos, haz el var_dump que te indica el compañero para que puedas validar que los datos que estas enviando lleguen correctamente.
__________________
Hasta que el hombre no es nada, Dios no puede hacer nada con el.
  #6 (permalink)  
Antiguo 18/08/2018, 17:05
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 11 años, 8 meses
Puntos: 12
Respuesta: Formulario con archivos adjuntos

Les agradezco pero no me es del todo clara la respuesta. Suponiendo que tengo 3 campos de adjuntos, ¿los 3 deben llamarse igual(archivo[] )? ¿O deben ser archivo[0] , archivo[1] y archivo[2] ? No me queda claro como recoger los valores si los 3 campos se llaman igual.

Yo no estoy intentando subir archivos al servidor sino enviarlos por mail a quien completa el formulario. El servidor es pago y si tiene permisos para hacer eso. Si envío un solo archivo llega perfectamente.

Disculpen si mi pregunta es muy tonta pero lo estuve intentando y no logro resolverlo. Muchas gracias.

Etiquetas: adjuntos, formulario, php+archivos
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 08:54.