Totalmente de acuerdo. Para evitar el problema de concurrencia de nombres, genera un nombre único. Y ya para rematar, cuando envies el email, borras el fichero del temporal ;)
El 28/11/06 19:34, "Julio Rabadán González" <[EMAIL PROTECTED]> escribió: > Ferran Rosales escribió: >> >> >> Hola! >> >> Necesito hacer un formulario que envie un mail con los datos del usuario y >> una foto que el usuario coge desde su ordenador. Se con php se puede, pero >> ahi me pierdo mucho...alguien puede ayudarme. >> >> >> Gracias. >> >> Ferran. >> _________________________________________________________________ >> Consigue el nuevo Windows Live Messenger >> http://get.live.com/messenger/overview >> ----------------------------------------------------- >> ASNativos >> www.5dms.com >> subscripciones/desubscripciones >> http://asnativos.5dms.com >> ----------------------------------------------------- >> >> >> > Lo que puedes hacer es lo siguiente. Suponiendo que tienes un formulario > en flash ya relleno, y que con el objeto FileReference ya has > seleccionado el fichero que quieres adjuntar, cuando envíes la > información al servidor lo harás en dos pasos. Primero subes el fichero > al servidor como cualquier fichero que subas con FileReference, y lo > guardas en una carpeta temporal (tmp_upload). Cuando salte el evento > FileReference.onComplete llamas a un php al que le pasas los otros datos > del formulario, y el nombre del fichero. Este script PHP enviará correo > con fichero adjunto, el fichero a adjuntar de la carpeta temporal donde > se ha almacenado. Listo. > > El PHP para enviar mail es este: > > <code> > > <?php > $fileatt = "./tmp_upload/". $_REQUEST['cv']; // Path to the > file > $fileatt_type = "application/octet-stream"; // File Type > $fileatt_name = $_REQUEST['cv']; // Filename that will be used for the > file as the attachment > > $nombre = $_REQUEST['nombre']; > $tlf1= $_REQUEST['telefono1']; > $tlf2= $_REQUEST['telefono2']; > $correo = $_REQUEST['email']; > $referencia = $_REQUEST['referencia']; > > $email_from = "[EMAIL PROTECTED]"; // Who the email is from > $email_subject = "Asunto"; // The Subject of the email > $email_txt = " Mail con referencia: $referencia<br> > <b>Nombre:</b> $nombre<br> > <b>Telefono 1:</b> $tlf1<br> > <b>Telefono 2:</b> $tlf2<br> > <b>Email:</b> $correo"; // Message that the email has in it > > $email_to = "[EMAIL PROTECTED]"; // Who the email is too > > $headers = "From: ".$email_from; > > $file = fopen($fileatt,'rb'); > $data = fread($file,filesize($fileatt)); > fclose($file); > > $semi_rand = md5(time()); > $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; > > $headers .= "\nMIME-Version: 1.0\n" . > "Content-Type: multipart/mixed;\n" . > " boundary=\"{$mime_boundary}\""; > > $email_message .= "This is a multi-part message in MIME format.\n\n" . > "--{$mime_boundary}\n" . > "Content-Type:text/html; charset=\"UTF-8\"\n" . > "Content-Transfer-Encoding: 7bit\n\n" . > $email_txt . "\n\n" ; > > $data = chunk_split(base64_encode($data)); > > $email_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"; > > $ok = @mail($email_to, $email_subject, $email_message, $headers); > > if($ok) { > echo "&mail=si"; > unlink($fileatt); > } else { > die("Sorry but the email could not be sent. Please go back and try > again!"); > } > ?> > > </code> > > El fichero que recibe el fichero del FileReference podría ser este : > > <code> > > <?php > > foreach($_FILES as $nombre=>$fichero) > { > if(is_uploaded_file($fichero['tmp_name'])) > { > move_uploaded_file($fichero['tmp_name'],"./tmp_upload/" . > $fichero['name']); > > echo "Fichero copiado en ". realpath ("./tmp_upload/") . > $fichero['name']; > } > } > ?> > </code> > > Puedes tener problemasde concurrencia si dos personas deciden subir a la > vez un fichero con el mismo nombre. Para evitar eso puedes cambiar el > nombre por uno temporal, y meter el nombre temporal en una variable de > sesión. El script de envío leera de la sesion el nombre del fichero > temporal, y lo adjuntará, pero utilizando el nombre que se le pasa como > variable. > > > Espero que sea de utilidad. > > Un saludo > > EvolvE > > ----------------------------------------------------- > ASNativos > www.5dms.com > subscripciones/desubscripciones > http://asnativos.5dms.com > ----------------------------------------------------- > ----------------------------------------------------- ASNativos www.5dms.com subscripciones/desubscripciones http://asnativos.5dms.com -----------------------------------------------------

