Foros del Web » Programando para Internet » PHP »

Cargar mas imágenes en formulario

Estas en el tema de Cargar mas imágenes en formulario en el foro de PHP en Foros del Web. Hola, necesitaría ayuda en el siguiente formulario que ya he conseguido. El tema es el siguiente : funciona perfecto pero quiero que quien lo use ...
  #1 (permalink)  
Antiguo 29/03/2010, 00:19
 
Fecha de Ingreso: abril-2009
Mensajes: 8
Antigüedad: 15 años
Puntos: 0
Cargar mas imágenes en formulario

Hola, necesitaría ayuda en el siguiente formulario que ya he conseguido.
El tema es el siguiente: funciona perfecto pero quiero que quien lo use pueda cargar hasta 5 imágenes, en vez de una y no puedo dar con la tecla. Agradezco la ayuda en que me digan que agrego, saco o cambio.

Aqui el codigo html (index.html)

<html>
<head>
<title>Send an Email</title>
</head>
<body>
<h1>Send an Email</h1>
<form action="mail.php" method="POST" enctype="multipart/form-data">
<p>To: <input type="text" name="to" value="" /><br />
From: <input type="text" name="from" value="" /><br />
Subject: <input type="text" name="subject" value="" /></p>
<p>Message:<br />
<textarea cols="70" rows="20" name="message"></textarea></p>
<p>File Attachment: <input type="file" name="fileatt" /></p>
<p><input type="submit" value="Send" /></p>
</form>
</body>
</html>

----------------------------------------------------------------------------
Aqui el código php (mail.php)

<html>
<head>
<title> Sending Email </title>
</head>
<body>
<?php
// Read POST request params into global vars
$to = $_POST['to'];
$from = $_POST['from'];
$subject = $_POST['subject'];
$message = $_POST['message'];

// Obtain file upload vars
$fileatt = $_FILES['fileatt']['tmp_name'];
$fileatt_type = $_FILES['fileatt']['type'];
$fileatt_name = $_FILES['fileatt']['name'];

$headers = "From: $from";

if (is_uploaded_file($fileatt)) {
// Read the file to be attached ('rb' = read binary)
$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
fclose($file);

// Generate a boundary string
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

// Add the headers for a file attachment
$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\"";

// Add a multipart boundary above the plain message
$message = "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$message . "\n\n";

// Base64 encode the file data
$data = chunk_split(base64_encode($data));

// Add file attachment to the message
$message .= "--{$mime_boundary}\n" .
"Content-Type: {$fileatt_type};\n" .
" name=\"{$fileatt_name}\"\n" .
//"Content-Disposition: attachment;\n" .
//" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n" .
"--{$mime_boundary}--\n";
}

// Send the message
$ok = @mail($to, $subject, $message, $headers);
if ($ok) {
echo "<p>Mail sent! Yay PHP!</p>";
} else {
echo "<p>Mail could not be sent. Sorry!</p>";
}
?>
</body>
</html>
  #2 (permalink)  
Antiguo 29/03/2010, 02:31
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: Cargar mas imágenes en formulario

Quieres subir 5 imágenes con el boton de examinar?, hay que poner 5 examinar con distinto nombre.
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #3 (permalink)  
Antiguo 29/03/2010, 06:21
 
Fecha de Ingreso: abril-2009
Mensajes: 8
Antigüedad: 15 años
Puntos: 0
Respuesta: Cargar mas imágenes en formulario

Gracias por tu respuesta, la verdad intente hacer eso, es más cuando copias y pegas el campo de archivo "fileatt" automaticamente te lo guarda como fileatt1, fileatt2 y asi sucesivamente, el problema es que si bien las carga en el formulario solo recibis una imagen, la primera...si me das mas info te agradezco...
  #4 (permalink)  
Antiguo 29/03/2010, 10:09
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: Cargar mas imágenes en formulario

no, a ver cuando tu cargas el archivo en PHP fijate que en algún punto estás usando el nombre del control (el atributo name del input type="file"). Si usas el sistema normal entonces será un índice de una variable global.

Entonces tu llamas al archivo que subes con $_FILES['inputfile'] siendo inputfile el nombre del input. Pues cambiando el nombre del índice se selecciona otro elemento.

Si quieres ver todos los que hay puedes probar a:

foreach($_FILES as $f){
move_uploaded_file ($f['tmp_name'],"aquí la ruta de destino".$nombredearchivodedestino);
}
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #5 (permalink)  
Antiguo 04/04/2010, 09:47
 
Fecha de Ingreso: abril-2009
Mensajes: 8
Antigüedad: 15 años
Puntos: 0
Respuesta: Cargar mas imágenes en formulario

Hola de nuevo, sigo con este dilema de los adjuntos aunque ya lo he solucionado, lo único que a medida que uno crece quiere ir agregando cosas.
Mi problema en este caso es el siguiente:
Debajo tengo los dos archivos (HTML y PHP), funcionan perfecto!, ya que podes enviar la cantidad de adjuntos que desees, lo que quiero ahora es que, al momento de enviar el mail completo vuelva otra vez al mismo formulario para seguir enviando archivos, pero que no vuelva a pedir los campos obligatorios de nombre, e-mail, asunto y mensaje ya que el usuario envio anteriormente sus datos y sería molesto volver a pedirselos. Espero su ayuda con que me digan que parte debo quitar o modificar del archivo PHP, gracias de antemano.


AQUI EL ARCHIVO HTML

<form name='formulario' id='formulario' method='post' action='enviar.php' target='_self' enctype="multipart/form-data">
<p>Nombre <input type='text' name='Nombre' id='Nombre'></p>
<p>E-mail
<input type='text' name='email' id='email'>
</p>
<p>Asunto
<input type='text' name='asunto' id='asunto' />
</p>
<p>Mensaje
<textarea name="mensaje" cols="50" rows="10" id="mensaje"></textarea>
</p>
<p>Adjuntar archivo: <input type='file' name='archivo1' id='archivo1'></p>
<p>
<input type='submit' value='Enviar'>
</p>
</form>


</html>


**************************************************
**************************************************

AQUI EL ARCHIVO PHP

<?php
function form_mail($sPara, $sAsunto, $sTexto, $sDe)
{
$bHayFicheros = 0;
$sCabeceraTexto = "";
$sAdjuntos = "";

if ($sDe)$sCabeceras = "From:".$sDe."\n";
else $sCabeceras = "";
$sCabeceras .= "MIME-version: 1.0\n";
foreach ($_POST as $sNombre => $sValor)
$sTexto = $sTexto."\n".$sNombre." = ".$sValor;

foreach ($_FILES as $vAdjunto)
{
if ($bHayFicheros == 0)
{
$bHayFicheros = 1;
$sCabeceras .= "Content-type: multipart/mixed;";
$sCabeceras .= "boundary=\"--_Separador-de-mensajes_--\"\n";

$sCabeceraTexto = "----_Separador-de-mensajes_--\n";
$sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
$sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n";

$sTexto = $sCabeceraTexto.$sTexto;
}
if ($vAdjunto["size"] > 0)
{
$sAdjuntos .= "\n\n----_Separador-de-mensajes_--\n";
$sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";;
$sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
$sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";

$oFichero = fopen($vAdjunto["tmp_name"], 'r');
$sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));
$sAdjuntos .= chunk_split(base64_encode($sContenido));
fclose($oFichero);
}
}

if ($bHayFicheros)
$sTexto .= $sAdjuntos."\n\n----_Separador-de-mensajes_----\n";
return(mail($sPara, $sAsunto, $sTexto, $sCabeceras));
}

//cambiar aqui el email
if (form_mail("[email protected]", $_POST[asunto],
"Los datos introducidos en el formulario son:\n\n", $_POST[email]))
echo "Su formulario ha sido enviado con exito";
?>
  #6 (permalink)  
Antiguo 04/04/2010, 11:20
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: Cargar mas imágenes en formulario

El código PHP tiene que estar en el mismo sitio que el código HTML (en la parte de arriba del mismo). Y en los value de los input que quieras que no se pierda el valor pon:

<input name="miInput" value="<?php echo $_POST['miInput']; ?>"/>
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it

Etiquetas: mas, formulario
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 10:51.