Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-09-2006
elcigarra elcigarra is offline
Miembro
 
Registrado: may 2005
Posts: 269
Poder: 20
elcigarra Va por buen camino
archivo en formulario php

Tengo un formulario en php que llega al usuario en mi página web. En este formulario hay un cuadro de texto donde el puede ingresar la dirección de un archivo en su disco duro. Todo el formulario es ingresado por mail con la funcion mail().

¿Es posible que en el mail cuando se remite el formulario venga adjunto el archivo que seleccionó el usuario en su pc?. ¿Como se hace eso?
Responder Con Cita
  #2  
Antiguo 18-09-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Vayamos por partes, como dijo Jack el destripador...

Cita:
Tengo un formulario en php que llega al usuario en mi página web.
¿Es el usuario quien llega a tu página Web? ¿El que llega es el formulario? Bueno. Yo entiendo que en tu página Web tienes un formulario desde el que un usuario puede indicarte la ruta de un archivo en su ordenador.

Cita:
En este formulario hay un cuadro de texto donde el puede ingresar la dirección de un archivo en su disco duro.
No estoy completamente seguro, pero, en estos casos, para que PHP pueda "hacerse" con el archivo en cuestión, es necesario que el cuadro de texto, el elemento "input" del formulario sea del tipo "file". Ignoro si con la ruta de un archivo, propiamente, podrías conseguir tu objetivo, pero, me parece que no sería posible.

Cita:
Todo el formulario es ingresado por mail con la funcion mail().
Esto no lo entiendo. Tú puedes enviar por correo el código HTML de un formulario, pero, este habrá de procesarse en el Servidor, es decir, el usuario podrá enviar el formulario (si esto es posible en su Gestor de correo, que yo no lo sé) y el formulario se procesará en el Servidor, nunca en el cliente, para subir archivos por lo menos...

Cita:
¿Es posible que en el mail cuando se remite el formulario venga adjunto el archivo que seleccionó el usuario en su pc?. ¿Como se hace eso?
Non sense in basic. Quiero decir, ¿qué significa "cuando se remite el formulario"? El formulario se ha de procesar en el Servidor, no se "remite" a ningún sitio... puede hacerse llegar el formulario (su código HTML) al cliente, pero, este siempre lo enviará al Servidor a que lo procese.

La verdad. A bote pronto no me parece descabellado enviar mediante correo un formulario al usuario que le permitiera seleccionar un archivo de su disco duro y enviarlo al Servidor. En la página Web de PHP se detalla pormenorizadamente cómo trabajar con archivos "enviados" desde formularios en el artículo "PHP - Manejo de envío de archivos".

Sin embargo, me huelo problemas con los Gestores de correo, y con algunos usuarios: personalmente, no recibo correo en formato HTML, por lo que nunca vería el formulario que me enviaras... así que, me parece, no estaría demás que el formulario de marras estuviera disponible en alguna URL, esto es, pudiera dirigirse allí al usuario para que enviara el archivo desde allí.

No sé si te he ayudado en algo o no...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 20-09-2006
elcigarra elcigarra is offline
Miembro
 
Registrado: may 2005
Posts: 269
Poder: 20
elcigarra Va por buen camino
Bueno, entendí. La próxima vez no escribiré tan apurado y tal vez me entiendan mejor. En realidad encontré lo ue quería en internet. Les paso el código para el que necesite hacer lo mismo. Solo tienen que ajustarlo a sus necesidades. El asunto será "Mandar un formulario por mail con un archivo adjunto"
Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Envio de correo con un archivo adjunto</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
   if ($_SERVER['REQUEST_METHOD']=="POST"){
   // we'll begin by assigning the To address and message subject
   // $to="nombredeldestinatario@correo.com";
      $to=$_POST['acorreo'];
   //$subject="E-mail with attachment";
     $subject=$_POST['asunto'];
   // get the sender's name and email address
   // we'll just plug them a variable to be used later
   $from = stripslashes($_POST['fromname'])."<".stripslashes($_POST['fromemail']).">";
   // generate a random string to be used as the boundary marker
   $mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";
   // store the file information to variables for easier access
   $tmp_name = $_FILES['filename']['tmp_name'];
   $type = $_FILES['filename']['type'];
   $name = $_FILES['filename']['name'];
   $size = $_FILES['filename']['size'];
   // here we'll hard code a text messge
   // again, in reality, you'll normally get this from the form submission
  // $message = "Here is your file: $name";
     $message = $_POST['mensaje'];
   // if the upload succeded, the file will exist
   if (file_exists($tmp_name)){
      // check to make sure that it is an uploaded file and not a system file
      if(is_uploaded_file($tmp_name)){
         // open the file for a binary read
         $file = fopen($tmp_name,'rb');
         // read the file content into a variable
         $data = fread($file,filesize($tmp_name));
         // close the file
         fclose($file);
         // now we encode it and split it into acceptable length lines
         $data = chunk_split(base64_encode($data));
     }
      // now we'll build the message headers
      $headers = "From: $from\r\n" .
         "MIME-Version: 1.0\r\n" .
         "Content-Type: multipart/mixed;\r\n" .
         " boundary=\"{$mime_boundary}\"";
      // next, we'll build the message body
      // note that we insert two dashes in front of the
      // MIME boundary when we use it
      $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";
      // now we'll insert a boundary to indicate we're starting the attachment
      // we have to specify the content type, file name, and disposition as
      // an attachment, then add the file content and set another boundary to
      // indicate that the end of the file has been reached
      $message .= "--{$mime_boundary}\n" .
         "Content-Type: {$type};\n" .
         " name=\"{$name}\"\n" .
         //"Content-Disposition: attachment;\n" .
         //" filename=\"{$fileatt_name}\"\n" .
         "Content-Transfer-Encoding: base64\n\n" .
         $data . "\n\n" .
         "--{$mime_boundary}--\n";
      // now we just send the message
      if (@mail($to, $subject, $message, $headers)) {

         echo "Correo enviado<br>";
         echo "<a href='http://pio9.com/22php.htm'>http://pio9.com/22php.htm</a><br>";
}
      else
         echo "Fallo en el envío";
     }
} else {
?>
<p><b><center>Envío de un correo con un archivo adjunto:</center></b></p>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"
   enctype="multipart/form-data" name="form1">
   <p>Nombre del que envia..... <input type="text" name="fromname" size="25"></p>
   <p>Correo del que envia....... <input type="text" name="fromemail" size="25"></p>
   <p>Correo del destinatario.... <input type="text" name="acorreo" size="25"></p>
   <p>Asunto............................ <input type="text" name="asunto" size="25"></p>
   <p>Mensaje:  <textarea name="mensaje" cols="50" rows="5"></textarea></p>
   <p>Archivo a enviar: <input type="file" name="filename"></p>
   <p><input type="submit" name="Submit" value="Enviar"></p>
</form>
<?php } ?>
</body>
</html>
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Formulario fevimo PHP 3 21-09-2006 20:30:32
pasar datos de un formulario vista a cualquier formulario @-Soft OOP 2 28-09-2004 21:56:01
Copiar datos de archivo a formulario wallesis OOP 2 27-09-2004 21:31:14
formulario MDI joanajj Varios 5 24-07-2004 01:50:37
boton a formulario pepelu1975 OOP 2 12-02-2004 13:15:51


La franja horaria es GMT +2. Ahora son las 18:13:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi