Enviar y/o subir multiples archivos adjuntos al estilo GMail
Por: alex | 18 Junio 2005 | Ver comentarios |
Como el título dice, este es un pequeño script que permite enviar y/o subir multiples archivos
al estilo de GMail, éste script utiliza PHP como lenguaje del lado del servidor, javascript para crear nuevos elementos HTML en la página y para el envío del mail se utiliza PHP Mailer que permite adjuntar archivos de una manera muy sencilla.
Primero se definen los elementos necesarios para poder enviar el mail
<form name="frm" id="frm" action="" method="post" enctype="multipart/form-data">
<dl>
<dt><label for="to" accesskey="1">Para</label></dt>
<dd><input type="text" name="to" id="to" size="60" /></dd>
<dt><label for="from" accesskey="2">De</label></dt>
<dd><input type="text" name="from" id="from" size="60" /></dd>
<dt><label for="sbj" accesskey="3">Asunto</label></dt>
<dd><input type="text" name="sbj" id="sbj" size="60" /></dd>
<dt><label for="msg" accesskey="4">Mensaje</label></dt>
<dd><textarea id="msg" name="msg" rows="7" cols="45"></textarea></dd>
<dt><label>Archivos Adjuntos:</label> <a href="#" onclick="addField()" accesskey="5">Añadir Archivo</a></dt>
<dd><div id="files"></div></dd>
<dd><input type="submit" value="Enviar" id="postback" name="postback" accesskey="6" /></dd>
</dl>
</form>La siguiente porción de código javascript, permite agregar y quitar elementos de tipo <input type= de manera dinámica, esta es una de las razones del título del artículo file
>
<script type="text/javascript">
var numero = 0;
// Funciones comunes
c= function (tag) { // Crea un elemento
return document.createElement(tag);
}
d = function (id) { // Retorna un elemento en base al id
return document.getElementById(id);
}
e = function (evt) { // Retorna el evento
return (!evt) ? event : evt;
}
f = function (evt) { // Retorna el objeto que genera el evento
return evt.srcElement ? evt.srcElement : evt.target;
}
addField = function () {
container = d('files');
span = c('SPAN');
span.className = 'file';
span.id = 'file' + (++numero);
field = c('INPUT');
field.name = 'archivos[]';
field.type = 'file';
a = c('A');
a.name = span.id;
a.href = '#';
a.onclick = removeField;
a.innerHTML = 'Quitar';
span.appendChild(field);
span.appendChild(a);
container.appendChild(span);
}
removeField = function (evt) {
lnk = f(e(evt));
span = d(lnk.name);
span.parentNode.removeChild(span);
}
</script>Finalmente viene el código del lado del servidor, que maneja los datos enviados
a través del formulario y hace el respectivo envío del mail a la dirección indicada
<?php
include_once('class.phpmailer.php');
// Indica si los datos provienen del formulario
$postback=isset($_POST['postback']) ? true : false;
if ($postback) {
extract($_POST);
$mail = new phpmailer ();
$mail -> From = $from;
$mail -> FromName = "BuayaCorp"; # Puede obtenerse del formulario, por facilidad se hace de esta manera
$mail -> AddAddress ($to);
$mail -> Subject = $sbj;
$mail -> Body = $msg;
$mail -> IsHTML (true);
$archivos = '';
$msg = "Mensaje Enviado";
if (isset ($_FILES["archivos"])) {
$msg .= "<ul>";
foreach ($_FILES["archivos"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["archivos"]["tmp_name"][$key];
$name = $_FILES["archivos"]["name"][$key];
$msg .= "<li>$name</li>";
$name = uniqid('bc') . '_' . $name; # Generar un nombre �nico para el archivo
$mail -> AddAttachment ($tmp_name, $name);
/*
Si se van a guardar los archivos en un directorio, deber�an descomentarse
las siguientes l�neas, si se van a guardar los nombres
de los archivos en una base de datos, aqu� deber�a realizarse algo...
move_uploaded_file($tmp_name, "ruta/directorio/$name"); # Guardar el archivo en una ubicaci�n, debe tener los permisos necesarios
*/
} #if
} # foreach
$msg .= '</ul>';
} # if
if (!$mail -> Send ()){
$msg = "No se pudo enviar el email";
}
}
?>Dependiendo de las necesidades que cada uno de ustedes pueda tener, este script puede modificarse con suma facilidad y asi conseguir el objetivo deseado
CiberEspia
21 de Junio de 2005, 02:32:25 pm
Me parece util…
buen trabajo!
Hector
21 de Junio de 2005, 06:20:21 pm
Hola me parece muy bueno tu articulo, sinembargo no se como aplicarlo a la página http://www.opeinvias.com/contacto
Es posible que me ayudes?
Por otro lado tengo muchas plantillas,que con gusto puedo conpartir contigo, como simbolo de agradecimiento.
Att.
Hector R Lasso
alex
21 de Junio de 2005, 09:43:57 pm
Hola, qué es lo que realmente quieres hacer?.
Ví tu página de contacto y al parecer todo funciona bien
Saludos
eximer
23 de Junio de 2005, 05:31:08 pm
Logre que envie el mailo y guarde el adjunto en una carpeta dentro de mi servidor, pero el adjunto se queda ahi no me llega a la direccion de mail. ¿tengo que configurar algo mas? Saludos.
eximer
23 de Junio de 2005, 06:28:18 pm
Te agrego mas datos, no trabajo de forma local siempre de forma remota, me llega el mail pero no el adjunto, el adjunto queda en la carpeta que defini con permisos 777 pero no me lo envia a mi correo.
alex
23 de Junio de 2005, 10:16:22 pm
No veo porque sea el problema, el ejemplo que puse en ésta página envía los archivos adjuntos sin problemas, probablemente no estés asignando bien la ruta de los archivos, intenta depurar el script, talvez te pueda servir el atributo
$mailer -> ErrorInfodel phpmailer, tambien deberías agregar una dirección a donde responder$mail -> AddReplyTo('foo@bar.com', 'Bug Reports');, escoger el método de transporte smtp$mail -> Mailer = "smtp";, etc.No se me ocurre que más sugerirte…
Saludos
Luis
28 de Junio de 2005, 11:27:52 am
Buenas!!
Como puedo recorrer los controles que se han creado con asp
Gracias
Ramiro
1 de Julio de 2005, 12:21:19 pm
Hola, me parce bien tu articulo, no se si me puedas ayudar, yo tngo instalado php y al correr tu aplicación y al enviar un archivo en mi pc me dice
:que Warning: Failed opening ‘class.phpmailer.php’ for inclusion (include_path=’.;c:\php4\pear’) in c:\foxserv\www\correo.php on line 72
Fatal error: Cannot instantiate non-existent class: phpmailer in c:\foxserv\www\correo.php on line 78
no se si me puedes ayudar a resolver este problema gracias
Braulio
1 de Julio de 2005, 01:33:35 pm
El problema es que no tienes la clase PHPMailer en el directorio donde corres el script. La clase PHPMailer la puedes descargar en éste enlace.
alex
1 de Julio de 2005, 06:45:42 pm
Puedes descargar el ejemplo que ya incluye dicha clase.
Saludos
Alfonso
2 de Julio de 2005, 08:58:49 pm
Que tal… Oye probe el ejemplo en mi maquina pero no envia, tengo instalado el PHP y el dreamweaver y tengo win2000 server… necesito tener instalado algun servidor de correo o algo referente para que se pueda enviar?… Si me pueden ayudar por favor…..
alex
4 de Julio de 2005, 10:42:47 am
Necesitas un servidor de correo, hasta donde sé en Windows 2000 trae un servidor SMTP como parte del IIS, configúralo bien para que te permita hacer relaying, ahora también puedes usar otro servidor SMTP, no necesariamente en tu máquina (eso gracias al phpmailer)
Saludos
Alejandro
5 de Julio de 2005, 11:22:24 am
Mira tu ejemplo me parece my bueno pero a la ora de correrlo en mi maquina me sale que no se pudo enviar el archivo no se si me podrias decir a que se deve o si se deven configurar algunois de los archivos .
alex
5 de Julio de 2005, 11:44:24 am
Te ayudaría con todo gusto, si pusieras más detalles sobre el error que te manda, no soy adivino…
Saludos
noelia
15 de Julio de 2005, 12:05:34 pm
hola, mi problema también es que no me llega el adjunto, solo el correo con el cuerpo del mail y el asunto…
podrias ayudarme?
Jany
15 de Julio de 2005, 03:14:43 pm
Hola, no tengo muy claro que tipo de codigo debo usar puesto que estoy utilizando jsp’s, lo que necesito es que los usuarios del portal puedan subir sus imagenes y archivos de texto a las paginas, ademas requiren que el portal cargue informacion dinamicamente…me ayudarias con eso please??, es para un proyecto del inst…
Gracias!…saludos
Hipocrita
19 de Julio de 2005, 09:19:39 am
Buenas, para enviar por correo lo tengo claro, pero ¿sirve para enviar ficheros al servidor? Por ejemplo para que envien descargas a mi web y se suban directamente a una carpeta /descargas/
Braulio
19 de Julio de 2005, 11:10:17 am
Claro, como ves en el nombre del artículo dice “Enviar y/o Subir”, sólo tienes que descomentar las líneas donde dice move_uploaded_file y cambias la ruta a la que quieres subir.
Saludos
Hipocrita
20 de Julio de 2005, 01:30:00 am
Muchas gracias Braulio, tu sitio web me parece excelente, de lo mejorcito, ánimo, espero que estes tan animado en este proyecto como yo leyendolo, un saludo
javier
3 de Agosto de 2005, 06:47:43 pm
hola porque solo puedo subir imagenes de poco tamaño. que tendria que cambiar para que pueda adjuntar fotos de mucho mayor tamaño. bye gracias
miguel
8 de Agosto de 2005, 07:29:51 am
Hola, la verdad q de muchos sites q estuve investigando este informe me parecio uno de los mas intersantes. Sin embargo como a muchos a mi tampoco me funciona. He subido los 3 archivos q vienen en la descarga, estan en la misma carpeta y alli mismo el formulario con el script para los input file, pero cuando envio me sale:
Method Not Allowed
The requested method POST is not allowed for the URL /prom/club/subirfotos_otro.htm.
——————————–
Apache/1.3.33 Server at http://www.calle8lima.com Port 80
Que otra cosa debo de configurar, cuando lo probe desde el link que tu pones de prueba si funciona y me llego al correo elegido, pero cuando los subi al servidor de mi cliente no funciona . Un favor si noes muy extensa la solucion dime los pasos a darse de modo explicito, no supongan q mis conocimientos ya son medios o avanzados en programacion , soy solo diseñador de webs y configuro de modo basico scripts y php ya elaborados. Bueno espero me ayudes por que lo quisiera aplicar ya. Gracias
alex
8 de Agosto de 2005, 07:31:53 pm
El problema que comentas es porque no le estás asignando la página que se va a encargar de procesar el formulario, el atributo
actionde tu formulario debe apuntar a la página donde se encuentra el script, Ejaction="subir.php", ahorita tu código está así:action="".Saludos
Miguel
11 de Agosto de 2005, 07:16:36 am
Gracias. La verdad q al inicio no entendí porque tampoco me fucionaba con tu indicación y viendo que tu ejemplo esta php se me ocurrio subir el archivo el que viene con la descarga : uploader.php, y al ingresar http://www.calle8lima.com/prom/club/uploader.phpaperece el formulario y asi funciono.Ocurre nunca use php como paginas sino como documento a llamar para algo. Sin me parecia extraño q en tu ejemplo el action tambien figuraba:action=”". esto lo comprendi luego que viese que dentro del uploader.php ya figuraba el codigo el php. ademas del form. Por lo tanto si yo queria q mi formulario sea un htm solo debia incluir el script para añadir campos y ademas crear un php aparte con el codigo que figuraba arriba del uploader.php o simplemente colocar en action, action=”uploader.php”. Bueno ya funciono todo. Gracias Alex. Si me he explicado de modo tan extenso es para algunos que les ocurriese el mismo problema. ojala me hayan entendido tambien. Sólo un detalle ¿hay alguna forma de que las imagenes no lleguen renombradas? si por ejmplo el archivo se llama cd.jpg me lo renombra a bc42fb362557e72_cd.jpg y ademas me lo adjunta doble. Bueno Gracias siempre
alex
11 de Agosto de 2005, 06:57:29 pm
Justamente en el script aparece la siguiente línea:
$name = uniqid('bc') . '_' . $name; # Generar un nombre único para el archivoSi quieres que no lo renombre, comenta o borra dicha línea, sobre el otro problema, no sé que esté sucediendo, no tengo detalles como para poder darte alguna solución.
Saludos
Javi_
17 de Agosto de 2005, 07:47:45 pm
Buenas de nuevo a todos. He estado pensando en como diseñar el uploader.php, pues dicho fichero debe recoger los campor de mi formulario en html.
Con eso recogemos los campos del formulario en html, excepto los ficheros adjuntos que no se como recogerlos.
y con esto:
Envio procesado’;
echo ‘Muchas gracias..’;
?>
enviamos el email.
La cuestion esta en como recoger los ficheros adjuntos en el formulario en html que se llaman file1 y file2 y como luego adjuntarlos al email.
Que pensais al respecto de esto?
Lo que no entiendo es el codigo:
$archivos = ”;
$msg = “Mensaje Enviado”;
if (isset ($_FILES[”archivos”])) { # Si es que se subió algún archivo
$msg .= “”;
foreach ($_FILES[”archivos”][”error”] as $key => $error) { # Iterar sobre la colección de archivos
if ($error == UPLOAD_ERR_OK) { // Si no hay error
$tmp_name = $_FILES[”archivos”][”tmp_name”][$key];
$name = $_FILES[”archivos”][”name”][$key];
$msg .= “$name”;
$mail -> AddAttachment ($tmp_name, $name); # Añade el archivo adjunto
} #if
} # foreach
$msg .= ”;
} # if
if (!$mail -> Send ()){
$msg = “No se pudo enviar el email”;
}
quizas utilizando parte de este codigo para recoger los datos adjuntados y luego añadirlos al mensaje pueda funcionar.
Me podeis ayudar?
En mi primer post hay errores en el codigo del fichero uploader.php, por eso se me ocurrio esto ultimo, es como he mandado otros emails utilizando codigo php en ficheros .php, pero en los que no se adjuntaban ficheros.
Javi_
17 de Agosto de 2005, 07:49:51 pm
No me deja adjuntar codigos, por favor, poneros en contactor conmigo a traves de javitenorio@msn.com ( es tambien mi cuenta en el messenger por si alguno de vosotros quiere agregarme)
alex
18 de Agosto de 2005, 02:26:28 pm
No entiendo muy bien qué es lo que quieres hacer, puedes contactactarme a través de alex[@]buayacorp.com si deseas…
Saludos
Jose Miguel
20 de Agosto de 2005, 02:00:47 pm
Hola amigo ,me parecio muy bueno tu articulo pero lo q no entinedo es.. porq no funciona el ejemplo q tienes aqui? siempre dice email no se pudo enviar.. y otra pregunta, donde se coloca la direccion a la cual van a llegar todos los datos? Gracias..
alex
20 de Agosto de 2005, 05:07:09 pm
Pues a mi me funciona bien…; sobre tu pregunta añades los recipientes con la sentencia
$mail -> AddAddress ($to);Saludos
Jose Miguel
20 de Agosto de 2005, 05:30:40 pm
Hola amigo ,ya me funciona pero tengo otra pregunta y disculpa la molestia.
Necesito colocar mas campos pero no se en donde ni como. La idea es q la gente envie algunos datos tales como nombre, apellido, teléfono, ciudad, etc ,etc y q adjunte su Curriculum. Gracias..
Gerardo Morales
22 de Agosto de 2005, 10:28:03 pm
Buenas noches, necesito que por favor me de una orientación, yo necesito que los usuarios solo puedan subir un archivo y que sea de extención .doc, .xls o jpg .
Que debo agregar oquitar al codigo para:
1. que solo se pueda mandar un archivo adjunto.
2. que el archivo adjunto sea .doc, .xls, o .jpg
Mil gracias por su colaboración.
Miguel Olivo
5 de Septiembre de 2005, 01:55:24 pm
como se podra hacer para que solo se puedan sierta cantidad archivos de puedan enviar Ejemplo: que solo se puedan abrir 7 input para enviar al tratar de abrir otro salgo un mensaje.
Muchas gracias por su ayuda
alex
5 de Septiembre de 2005, 07:19:28 pm
En el script hay una variable global
numero, simplemente bastaría con poner la condición necesaria al inicio de la funciónaddField.Saludos
Yiyo
14 de Septiembre de 2005, 09:37:19 am
Tengo una duda… cómo puedo componer la variable $msg con distintas variables, por ej. $nombre; $ direccion; $telefono; etc.
Gracias anticipadas por la ayuda
alex
14 de Septiembre de 2005, 09:56:50 pm
Hola Yiyo, la variable
$msg, simplemente es para indicar si se ha enviado el mail o no, no se utiliza para otro propósito. A qué te refieres específicamente?Saludos
Daniel
15 de Septiembre de 2005, 01:08:16 pm
Hola , felicitaciones por el script me es muy util ,
Como hago para poner un limite de archivos adjuntos que me puedan mandar como maximo 3 ?
Vi tu explicacion aca :
————————————–
alex dijo:
Setiembre 5th, 2005 at 7:19 pm
En el script hay una variable global numero, simplemente bastaría con poner la condición necesaria al inicio de la función addField.
———————————
Me podrias indicar un poco mejor que no logro hacerlo ?
Gracias
Saludos
alex
15 de Septiembre de 2005, 07:22:21 pm
Hola Daniel, como te dije, sólo basta poner esta condición al inicio de la función
addField:addField = function () {
if (numero >3 ) return false;
container = d('files');
...
Saludos
Diego
17 de Septiembre de 2005, 01:22:39 am
La pagina funciona bien. El mail lo recibo correctamente a mi correo electrónico, pero NO RECIBO LOS ARCHIVOS ADJUNTOS QUE ENVIO….¿Donde está el problema?
Gracias por su ayuda,
Diego.
Milton
24 de Septiembre de 2005, 01:51:29 pm
holas…este formulario me parece muy bueno, la verdad no conozco mucho el tema pero vengo leyendo muuuuucho desde ayer, mi pregunta es, en cual de los files debo cambiar para que llegue al correo que se desea, deseo renombrar ese file uploader a contactenos, se puede?..no afecta en algo el funcionamiento?..puedo borrar algunos campos del formulario o cambiar de nombres?..no afecta en nada a los demas files?…ayudenme plz—
Daniel
26 de Septiembre de 2005, 06:46:21 pm
Alex , como hago para que despues que al usuario le sale el “mensaje enviado” lo redireccione en una pagina nueva a la web que yo le indique , tiene que abrirsele en una pagina nueva la direccion que yo le indique.
¿Como hago ?
Gracias
alex
26 de Septiembre de 2005, 11:24:44 pm
Diego: El hecho de que no envíe los archivos adjuntos puede ser problema de tu servidor de correo, hasta ahora los adjuntos que he enviado han llegado sin problemas.
Milton: Como menciono arriba, puedes personalizar el script, puedes crear tu propio formulario y sólo invocar al script php, sobre cambiar el nombre de los elementos, puedes hacerlo, pero asegúrate tambien de hacerlo en el script.
Daniel: Para redireccionar a otra página, simplemente debes enviar los cabeceras para eso:
header("Location: tupagina.php");, esa parte debes ubicarlo al final de:if ($postback) {...
header("Location: tupagina.php");
}
..
Saludos.
Milton
27 de Septiembre de 2005, 01:07:40 pm
por favor podrías especificarme como hacerlo?…aqui te dejo mi link de la pagina…en el link de concactenos quiero poner este formulario pero quiero trabajarlo con este mismo scrìpt, como veras, hay un espacio vacio alli para poner el formulario, lo que quiero saber es como vinculo la pagina contactenos.html con los scripts para que trabajen normalmente..por favor una ayudadita, no entiendo muy bien PHP pero puedo usar el dreamweaver a nivel basico, ya que uso front page…como veran la pagina esta vacia pero ya ire poniendo el texto…me estoy enfocando mas en lo mas dificil para mi..lo que es el formulario..pero no quiero perder el diseño de la pagina, osea no quiero trabajar con un formulario vacio, sin vida…..se podrá?….hize eso de pegar todo el code de mi pagina y pegarlo en mi form pero cuando lo guardo en formato php, se pierden los graficos…quisiera una ayudadita paso a paso…
Mi pagina: http://usuarios.lycos.es/comprasenusa/index.html
Milton
27 de Septiembre de 2005, 01:25:37 pm
debo hacer algun cambio al file class.phpmailer para que llegue a mi correo?…los files adjuntos?..
Daniel
27 de Septiembre de 2005, 01:58:19 pm
Alex , gracias por tu respuestas , te molesto la ultima vez ,
Yo estoy usando el formulario para vender fotografias por medi de una pagina , ed decir la gente me manda usando el formulario una foto y despues de confirmarle el envio hace click y va a una pagina de paypal .
Lo que no puedo hacer es ponerle un hipervinculo a paypal a la confirmacion del mensaje que diga algo asi : ” Su mensaje se a enviado (haga click aqui para seguir el proceso )
Necesito que la persona al hacer click en “la confirmacion de envio” se abra en una pagina nueva a Paypal .
Tiene que ser en una pagin nueva .
Trato de ponerle un hiperviculo y me da error . como puedo hacerlo ?
Gracias
Saludos
Milton
29 de Septiembre de 2005, 10:14:26 am
Todos se quedaron sin hablar…:(
alex
1 de Octubre de 2005, 03:07:57 pm
Milton: Como ya te había mencionado, puedes modificar las cosas que quieras, sólo debes tener cuidado en el cambio de los nombres, por ejm: Si en el formulario cambias:
por<input type="text" name="from" id="from" size="60" />
<input type="text" name="remitente" id="remitente" size="60" />
En el script PHP deberías cambiar
$mail->From = $from;por$mail->From = $remitente;.Daniel: Acabo de responder al mail que me enviaste, me indicas qué es lo que _exactamente_ deseas para poder ayudarte.
John Peñ@
3 de Octubre de 2005, 09:29:50 am
Necesito ayuda con Upload…
Quiero subir un archivo que se encuentre en una determinada carpeta en el cliente(Esto siempre va a ser así, es decir, el nombre de la carpeta es estandar) de manera automatica sin hacer clic en examinar, sino que se suba en background cuando se envie un formulario , ej: c:\PDF\ y el nombre del archivo va hacer dinamico…
Por favor, ayudenme con esto ya que es urgente….he estado investigando pero no encuentro nada…mis paginas estan hechas en PHP,
Gracias…le agradezco su colaboracion
alex
4 de Octubre de 2005, 12:49:53 pm
No puedes hacerlo sólo con PHP, ya que éste no tiene acceso a los recursos del cliente, además por razones de seguridad no puedes tener un valor por defecto en un elemento de tipo “file”. Necesitas siempre de la intervención del usuario o crear un programa cliente que se encargue de subir los archivos…
Saludos
Gerardo Morales
6 de Octubre de 2005, 11:34:54 am
Alex buenas tardes, como se puede hacer para agregar mas campos al formulario y que también los envíe con el correo, ejemplo existe un campo que es el cuerpo del documento, como se puede hacer para adicionar mas campos de este tipo, por ejemplo agregar dos textarea mas que contengan otra información pero que tambien lleguen junto con el correo, mil gracias por su ayuda
Mauricio
7 de Octubre de 2005, 01:57:37 pm
necesito el form me envie informacion adicional con campos de texto, radioButtons y checkButtons, no se si puedan ayudarme
eduardo
12 de Octubre de 2005, 11:26:24 am
hola, veo que eres un experto en informatica y quisiera ver si puedes ayudarme. necesito abrir un archivo con terminación( .msg), pero no se como hacerlo o con que programa, ojala pudieras ayudarme.
Mao
12 de Octubre de 2005, 04:37:33 pm
Necesito ayuda, que variable agrego o cambio para disponer de mas campos de texto??
HELP ME!!!!
Gerardo Morales
16 de Octubre de 2005, 11:23:16 am
Alex, veo que aquí varios necesitamos mas campos de texto en el formulario, por favor enseñanos que devemos hacer?
GRACIAS
Alex
16 de Octubre de 2005, 09:25:12 pm
Primero que nada disculpen por mi ausencia.
Mao y Gerardo: Lamentablemente no puedo poner el ejemplo dentro de los comentarios, tampoco creo que sería bueno que modifique el “artículo”, qué me sugieren hacer??
Saludos
Gerardo Morales
17 de Octubre de 2005, 10:16:09 pm
Bueno Alex, te agradecería infinitamente si me puedes mandar todo el codigo o las instrucciones de que debo hacer para agreagar mas campos de texto a mi correo gerardo.morales.oQ@gmail.com
Mao
21 de Octubre de 2005, 01:37:00 pm
Viejo Alex, mi correo es mauricio_cubillos@yahoo.es o webmaster@k-market.com.co, le agradesco hermano su ayudita por que definitivamente las variables que agrego no me funcionan, otra vez gracias.
alex
21 de Octubre de 2005, 02:14:34 pm
Listo, acabo de enviarles la modificación.
Saludos
Gerardo Morales
21 de Octubre de 2005, 10:48:15 pm
Alex, que pena incomodarlo, parece que mi correo aqui tomo un caracter mas, mi correo es gerardo.morales.o@gmail.com
Gracias anticipadas por su generosa ayuda
Xander
22 de Octubre de 2005, 06:42:51 pm
Saludos, Felicitaciones por tu formulario esta buenazo.
Tengo un pequeño poblema: cree la carpeta donde seran publicados los archivo que se subiran y tambien le di permisos 777. lo que no logro cambiar es la ruta para esa carpeta si me pueden ayuda…
move_uploaded_file($tmp_name, “ruta/directorio/$name”);
en que linea esta ese move_uploaded_file.
Gracias
alex
22 de Octubre de 2005, 07:02:45 pm
Gerardo: Volví a enviar la modificación a la dirección que mencionas.
Xander: Esa línea está comentada, tienes que “descomentarla”, el segundo parámetro indica la ruta que definiste para guardar tus archivos.
Saludos
isabela
4 de Noviembre de 2005, 03:59:05 pm
holas, tengo problemas al enviar emails desde gmail nose si tengo que configurar mi cuenta o modificar el codigo. de phpmail.
help me.
Alex
4 de Noviembre de 2005, 04:04:49 pm
Hola Isabela, tienes algún mensaje de error al intentar enviar? qué es exactamente lo que estás haciendo?.
Saludos
PS. Para que no se haga más extenso los comentarios, puedes contactarme en: alex[@]buayacorp.com
Sandrox
10 de Noviembre de 2005, 04:23:30 pm
Hola Isabela, disculpa q te moleste pero tengo una duda en la q tal ves podrias ayudarme, tu codigo me funciona muy bien, pero cuando quiero enviar el e-mail con copia utilizando :
$mail -> AddCC(”otromail@dominio.com”)
no me aparace ningun mensaje de error sin embargo el mail dirigido a esta persona nunca se envia, si pudieras pasarme algun dato del ¿porq? te estare eternamente agradecido.
alex
10 de Noviembre de 2005, 05:51:20 pm
Hmm, por qué no pruebas añadiendo esa dirección haciendo lo siguiente:
$mail -> AddAddress ("tumail@dominio.com");Saludos
Dani
11 de Noviembre de 2005, 07:47:22 am
Hola a todos. mi pregunta es si es posible especificar el tipo de fichero para subir, es decir, que sólo se puedan enviar ficheros “EXE” o ficheros “IMAGEN” por ejemplo.
Gracias!
alex
14 de Noviembre de 2005, 08:15:08 pm
Hola,
A nivel del cliente, sólo puedes comprobar las extensiones de los archivos que suben, pero a nivel del servidor si puedes basarte en el MIME del archivo (una vez que haya subido).
Saludos
albert
27 de Noviembre de 2005, 06:30:49 pm
hola amigos, mi nombre es albert, i os queria preguntar porfavor si podriais vosotros hacerme un formulario k aki teneis con el k se pueden enviar fotos en el link:
http://www.buayacorp.com/archivos/enviar-o-subir-multiples-archivos-adjuntos-al-estilo-gmail/
i si podriais hacerlo para mi web i enviarmelo por email porfavor. muchas gracias.
Mario Arturo Garfias
2 de Diciembre de 2005, 03:50:48 pm
Alex:
Antes que todo, mis felicitaciones y agradecimientos. De todo lo que he podido encontrar en la web respecto a este tema, creo que esta solución es la más práctica y comprensible. (Estoy dando mis primerois pasos en PHP.)
Quisiera aprovecharme de tu buena disposición y pedirte si me puedes enviar como debería modificarse el código para agregar mas campos de texto, tal como se los mandaste a Mao y a Gerardo.
Además, si fuera posible, que me explicaras como no recurrir al javascript para adjuntar archivos y poner directamente campos de archivo en el formulario.
De antemano, te reitero mis agradecimientos y felicitaciones por vuestra página.
Mario
alex
4 de Diciembre de 2005, 11:38:06 am
Hola,
Albert: Lamentablemente no contamos con tiempo para hacer el trabajo por ti.
Mario: Gracias por los comentarios, ya te contesté al mail que proporcionaste.
weyler
7 de Diciembre de 2005, 11:40:52 am
Bueno antes que nada felicitaciones por este articulo esta bastante bueno, es lo que andaba buscando, pero tengo una pequenia preguntita
A) Por ejemplo cuando te llega un archivo adjunto a tu correo te aparece el nombre del archivo, si el archivo enviado fue “archivo.zip” ese nombre te aparece cuando se te envia. Al parecer en tu ejemplo tu mismo tienes que generar un nombre para este archivo. ¿No se le puede poner el mismo nombre (al archivo) con el cual se esta enviando para que al destinatario le llegue el mismo nombre de archivo que yo envie?
Alex
7 de Diciembre de 2005, 02:08:52 pm
Si se puede, simplemente quita esta línea del script:
$name = uniqid('bc') . '_' . $name; # Generar un nombre único para el archivoSaludos
weyler
7 de Diciembre de 2005, 03:00:24 pm
Oye y esta parte:
$mail -> FromName = “BuayaCorp”; # Puede obtenerse del formulario, por facilidad se hace de esta manera
¿Que parametro es? ¿Como lo puedo obtener del formulario (como tu dices)?
alex
7 de Diciembre de 2005, 07:49:05 pm
Hmm, esa _variable_ indica el nombre con el que se envía el correo (BuayaCorp ), puedes _recibirlo_ poniendo otro elemento en tu formulario HTML…
Saludos
Mario Arturo Garfias
8 de Diciembre de 2005, 01:25:13 am
Alex: te agradezco enormemente la respuesta que me mandaste; me funcionó perfecto.
Quisiera aprovechar tu disposición y hacerte algunas preguntas más:
1.- Hay alguna posibilidad de aumentar el tamaño de los archivos que se envían…¿como?. (Pasados los 5mb, se queda pegada la página o, simplemente no me despacha nada.)
2.- Si no es posible lo anterior, ¿como se podría hacer para que al sobrepasarse la capacidad máxima de despacho le apareciese un mensaje al usuario informándole que no puede seguir adjuntando archivos?
Ojala me puedas responder, lo más detallado posible (a prueba de novatos)
Agradecido desde ya,
Mario
Mario Arturo Garfias
8 de Diciembre de 2005, 01:26:33 am
Alex: te agradezco enormemente la respuesta que me mandaste; me funcionó perfecto.
Quisiera aprovechar tu disposición y hacerte algunas preguntas más:
1.- Hay alguna posibilidad de aumentar el tamaño de los archivos que se envían…¿como?. (Pasados los 5mb, se queda pegada la página o, simplemente no me despacha nada.)
2.- Si no es posible lo anterior, ¿como se podría hacer para que al sobrepasarse la capacidad máxima de despacho le apareciese un mensaje al usuario informándole que no puede seguir adjuntando archivos?
Ojala me puedas responder, lo más detallado posible (a prueba de novatos)
Agradecido desde ya,
Mario
weyler
8 de Diciembre de 2005, 11:28:34 am
oye Mario Arturo Garfias en esta pagina: http://www.php.net/manual/es/features.file-upload.php puedes encontrar algo de informacion sobre la pregunta de los tamaños del archivo, espero y te sirva.
weyler
8 de Diciembre de 2005, 11:30:01 am
oye Mario Arturo Garfias en esta pagina: http://www.php.net/manual/es/features.file-upload.php puedes encontrar algo de informacion sobre la pregunta de los tamaños del archivo, espero y te sirva.
weyler
8 de Diciembre de 2005, 11:33:30 am
oye Mario Arturo Garfias en esta pagina: http://www.php.net/manual/es/features.file-upload.php puedes encontrar algo de informacion sobre la pregunta de los tamaños del archivo, espero y te sirva.
Diego
12 de Diciembre de 2005, 04:04:10 pm
despues de recorrer varios sitios este fue el mejor ejemplo de envio de mail con archivos adjuntos, y funciona a la perfección, pero me surgió un problema, no me llegan los mail a mi casilla de hotmail y a la de yahoo, en cambio a la de gmail si me llegan sin ningun tipo de inconveniente.
Alguien sabe como configurar el script para que se pueda recibir en las casillas de hotmail y la de yahoo?
Alex
13 de Diciembre de 2005, 12:37:45 am
Prueba enviando usando el servidor SMTP directamente y poniendo algunas cabeceras relevantes, si continúan los problemas puedes enviarme un mail, para ver si puedo ayudarte o no.
Saludos
Mao
20 de Diciembre de 2005, 09:16:46 am
Alex, tengo el mismo problema que tiene Mario Arturo, si me envian un archivo demasiado pesado no me llega a mi bandeja de entrada, entre al enlace que es mencionado arriba como referencia pero no encontre nada, hay alguna forma de que se me envie información mas pesada, o que si llega a el tamaño maximo, rebote un mensaje de alerta?
Mil Gracias por toda su ayuda.
Alex
20 de Diciembre de 2005, 07:16:22 pm
Mao, tienes que modificar el php.ini para permitir eso (upload_max_filesize, post_max_size), adicionalmente puedes hacer que el script rechaze archivos que sean mayores a un determinado tamaño, revisa el siguiente comentario:
http://www.php.net/manual/es/features.file-upload.php#50939
Saludos
Ramon
2 de Enero de 2006, 11:24:49 am
gracias
Binfel
27 de Enero de 2006, 02:02:31 am
Hola, desde ya gracias a vosotros por el excelente trabajo que haceis, les comento trate de utilizar el código pero me reporta el sgte error:
Warning: Invalid argument supplied for foreach() in /data/virtuales/visitusaperu.org.pe/uploader/uploader.php on line 29
Podeis echarme una mano con esto. Gracias anticipadas.
Rafa
29 de Enero de 2006, 01:02:48 pm
Excelente labor Alex
alex
31 de Enero de 2006, 01:38:52 pm
Hola,
Para agregar nuevos campos, simplemente inserta los tags correspondientes dentro del formulario (Ejm.
<input name="foo" type="text" />) y lo recuperas el valor de éste con el nombre que usaste ($foo)Saludos
Saludos
Binfel
1 de Febrero de 2006, 10:37:05 pm
Hola Alex podeis ayudarme, pf. con el comentario 84, hace mas de una semana que lo postié pero no pasa na. Gracias
alex
2 de Febrero de 2006, 11:31:41 am
Hola Binfel,
El error que muestras es algo genérico, sería bueno que indiques la versión de PHP que tienes, si modificaste el script o no. En todo caso, asegúrate que los archivos por lo menos llegan al servidor.
Saludos
braulio
2 de Febrero de 2006, 11:33:07 am
Binfel, este error sale cuando recorres algo que no es un arreglo, en este caso la variable $_FILES, lo que supongo es que en tu formulario no estás poniendo corréctamente el atributo enctype, debería ser asi
Revisa, talvez ese sea el error.
Saludos
Rafa
4 de Febrero de 2006, 04:27:35 pm
QUE TAL ALEX
TE COMENTO QUE CUANDO COLOCO EL EJEMPLO QUE ME DICES EN EL COMENTARIO 86 NO LOGRO RECUPERAR EL VALOR, SINO QUE LO SUSTITUYE POR OTRO
rocio
21 de Marzo de 2006, 12:49:31 pm
hola no se como enviar archivos adjuntos sera que alguien me pueda ayudar
Subiendo múltiples archivos con .NET
21 de Marzo de 2006, 04:47:42 pm
[…] Exportar reportes Crystal Reports en ASP.NET (7502)Mostrar una imagen desde blob mysql usando PHP (5553)Exportar un Datagrid a Excel (5450)Guardar una imagen y su miniatura a un campo Blob de mysql (5079)Enviar y/o subir multiples archivos adjuntos al estilo GMail (4692)Colección de fuentes gratis (1885)Menus Simples con CSS y listas (1864)BConverter una aplicación MIDlet en J2ME (1721)Guardar y recuperar archivo en un campo blob de PostgreSQL con PHP (1645)Tablas con CSS (897) […]
Carlos Mendoza
5 de Abril de 2006, 12:17:44 pm
Hola.
Te felicito por tan buen scripts, me ha servido de mucho.
Tengo una pregunta, a partir de estos scripts desarrolle una pequeña página que maneja DOM con javascript para manejo de etiquetas HTML. El punto es funciona perfectamente en Mozilla Firefox, pero no funciona en Internet Explorer.
Quisiera saber si me puedes ayudar a solucionar esto. Te mando el código del archivo que te digo.
De antemano te agradezco por tu colaboración.
Carlos
Anexo código fuente del archivo “Tabla.html”
Tablas
var numero = 0;
function valor_cero(){
frm.i.value=”;
frm.i.value=’0′;
}
// Funciones comunes
c= function (tag) { // Crea un elemento
return document.createElement(tag);
}
d = function (id) { // Retorna un elemento en base al id
return document.getElementById(id);
}
e = function (evt) { // Retorna el evento
return (!evt) ? event : evt;
}
f = function (evt) { // Retorna el objeto que genera el evento
return evt.srcElement ? evt.srcElement : evt.target;
}
addField = function () {
cont=parseInt(frm.i.value);
cont+=1;
frm.i.value=”+cont;
contenedor = d(’tabla_contenedora’);
// Se crea la fila
tr=c(’TR’);
tr.id=’tr’+cont;
//se agrega el td de codigo
td_codigo=c(’td’);
td_codigo.align=’center’;
td_codigo.id=’td_codigo’+cont;
//se crea el campo de codigo
campo_codigo = c(’INPUT’);
campo_codigo.name = ‘codigo’+cont;
campo_codigo.type = ‘text’;
//se agrega el td de descripcion
td_descripcion=c(’td’);
td_descripcion.align=’center’;
td_descripcion.id=’td_descripcion’+cont;
//se crea el campo de descripcion
campo_descripcion = c(’INPUT’);
campo_descripcion.name = ‘descripcion’+cont;
campo_descripcion.type = ‘text’;
//se agrega el td de cantidad
td_cantidad=c(’td’);
td_cantidad.align=’center’;
td_cantidad.id=’td_cantidad’+cont;
//se crea el campo de cantidad
campo_cantidad = c(’INPUT’);
campo_cantidad.name = ‘cantidad’+cont;
campo_cantidad.type = ‘text’;
//se agrega el td de valor unitario
td_vu=c(’td’);
td_vu.align=’center’;
td_vu.id=’td_vu’+cont;
//se crea el campo de valor unitario
campo_vu = c(’INPUT’);
campo_vu.name = ‘valor_unitario’+cont;
campo_vu.type = ‘text’;
//se agrega el td de valor unitario de descuento
td_vud=c(’td’);
td_vud.align=’center’;
td_vud.id=’td_vud’+cont;
//se crea el campo de descripcion
campo_vud = c(’INPUT’);
campo_vud.name = ‘valor_unitario_descuento’+cont;
campo_vud.type = ‘text’;
//se agrega el td de valor total
td_vt=c(’td’);
td_vt.align=’center’;
td_vt.id=’td_vt’+cont;
//se crea el campo de descripcion
campo_vt = c(’INPUT’);
campo_vt.name = ‘valor_total’+cont;
campo_vt.type = ‘text’;
//se agrega el td de Quitar TR
td_quitar=c(’td’);
td_quitar.align=’center’;
td_quitar.id=’td_quitar’+cont;
//se crea el campo de descripcion
boton_quitar = c(’INPUT’);
boton_quitar.name = ‘quitar’+cont;
boton_quitar.id = ‘quitar’+cont;
boton_quitar.type = ‘button’;
boton_quitar.value= ‘Quitar’;
boton_quitar.onclick = removeField;
//se agregrega y se imprime
tr.appendChild(td_codigo);
tr.appendChild(td_descripcion);
tr.appendChild(td_cantidad);
tr.appendChild(td_vu);
tr.appendChild(td_vud);
tr.appendChild(td_vt);
tr.appendChild(td_quitar);
td_codigo.appendChild(campo_codigo);
td_descripcion.appendChild(campo_descripcion);
td_cantidad.appendChild(campo_cantidad);
td_vu.appendChild(campo_vu);
td_vud.appendChild(campo_vud);
td_vt.appendChild(campo_vt);
td_quitar.appendChild(boton_quitar);
contenedor.appendChild(tr);
}
removeField = function (evt) {
lnk = f(e(evt));
td=lnk.parentNode;
tr=td.parentNode;
tabla=tr.parentNode;
tabla.removeChild(tr);
}
Tablas Agregar Tr
Codigo
Descripcion
Cantidad
Valor Unitario
VR UN%DESC
Valor Total
Quitar
alex
5 de Abril de 2006, 12:30:48 pm
Hola Carlos,
Envíame el archivo adjunto a alex at buayacorp dot com
Saludos
porty
11 de Abril de 2006, 03:59:17 pm
Hola, me gustaria pedirte ayuda. Creo haber configurado bien todo, pero todavía no consigo hacer que me lleguen los mansajes. Siempre me sale “No se ha podido enviar el mensaje”. A alguien le importaria agragarme al msn (iportillo_barca@hotmail.com) y echarme una mano…??
Gracias
alex
11 de Abril de 2006, 09:15:28 pm
Hola,
Usa
$mail->ErrorInfopara saber exáctamente cual es el error.Saludos
PS. Me gustaría añadirte a mi msn, pero no doy soporte
Alberto
19 de Abril de 2006, 06:01:40 am
Hola. Cuando intento ejecutar el script me aparece el error : ‘container’ es nulo o no es un objeto. Este error se produce cuando se va a ejecutar la línea container.appendChild(span);
¿Puede alguien decirme a qué se debe?
Gracias.
Erick Rivadeneira
20 de Abril de 2006, 06:56:38 pm
Hola quisiera que me ayuden porque tengo la necesidad de enviar mails a través del internet adjuntando un archivo, que es lo que muestra este ejemplo.
Quisiera saber cómo puedo hacer que en ek nombre de destinatario pueda elegir las direcciones mail desde una base de datos??? gracias
alex
24 de Abril de 2006, 12:35:54 pm
Hola,
Alberto: El error probablemente se deba a que no tengas un elemento con id “files”, que es el que está por defecto en el script
container = d('files');. Puedes ver una versión mejorada de ese script en esta otra entradaErick: Puedes usar Autocompleter que forma parte de http://script.aculo.us/
Saludos
andres Largo
26 de Abril de 2006, 04:21:22 am
Alex, te agradeceria a infinitamente si me puedes mandar todo el codigo o las instrucciones para agreagar mas campos de texto a mi correo andres@ingenio-imagen.com
Un saludo y felicidades. Por cierto conoces HOSTINET.COM?
es que ayer me funcionaba a la perfección tu escript y hoy me realiza la funcion de addField, vamos, que hago click y nada. sabes a ke se puede deber este error?. te repìto que ayer funcionaba perfectamente y hoy ya no (www.hostinet.com)
Jorge
27 de Abril de 2006, 05:17:11 am
Es un archivo muy interesante pero no tengo ni idea de como implementarlo en mi web. Me interesa hacer una especie de formulario de información en el que se pudiese adjuntar un cv y enviarlo a una direccion de correo. Agradeceria cualquier ayuda.
Un saludo y gracias.
Jorge
27 de Abril de 2006, 05:18:02 am
Perdona, mi direccion de correo es jmbrunton@gmail.com
Jorge
28 de Abril de 2006, 03:27:37 am
sabeis como tengo que enviar un correo en el cual como fondo tengo una imagen, sin que esta imagen aparezca como fichero adjunto en Hotmail.
al enviar publicidad a los cllientes, he construido un fichero .html que lo inserto como fondo de correo. Si lo envío y recibo por Outlook no hay problema. Si hay problema con Hotmail, y es el que intento solucionar.
A ver si me podeis ayudar, que debe ser algo facil, pero que ahora mismo desconozco.
alex
28 de Abril de 2006, 06:43:07 pm
Hola,
Jorge 1: Hacer las modificaciones para el envío de cv’s es una tarea trivial, te sugiero que comiences a leer algo sobre html y php
Jorge 2: Para que puedas enviar imágenes dentro del mail, éste tiene que estar en formato HTML (
$mail->IsHtml(true);), tienes 2 opciones:- La imágen se cargue de manera remota:
$mail->Body = '<img src="http://tusitio.com/una-imagen.png" />';- La imagen esté *embedida* dentro del mail:
$mail->IsHtml(true);$mail->AddEmbeddedImage('/home/alex/una-imagen.jpg', 'un-id', 'una-imagen.jpg '));)
$mail->Body = 'Imagen: <img src="cid:un-id" />';
enzo
6 de Mayo de 2006, 03:42:30 pm
me figura este erro alguien sabe que es? :
Warning: fsockopen() has been disabled for security reasons in /www/sites/1/iespana.es/s/h/shaper/site/class.smtp.php on line 105
alex
6 de Mayo de 2006, 05:41:49 pm
El error es claro, no se puede usar fsockopen en tu proveedor de hosting, me imagino que estás intentando enviar mails usando smtp, intenta hacerlo usando sólo la función mail.
Saludos
occy
7 de Mayo de 2006, 05:06:00 pm
No me llegan los adjuntos si el email, hay que configurar algo para que lleguen porque no veo el el error si alguien me puede ayudar???
alex
8 de Mayo de 2006, 05:14:07 pm
Hola,
Ese problema, al parecer, se presenta porque los archivos que se envían son grandes y no se terminan de subir, revisa el comentario 82. e intenta modificar los parámetros allí mencionados.
Saludos
occy
8 de Mayo de 2006, 07:52:57 pm
alex intente hacer lo que me decis de colocar un archivo de menor tamaño y no funca me comunique con el servicio tecnico de mi servidor y no saben un corno. hay algo que se me esta escapando y no se que sumale que mucho no se de progrmacion. encontre un pag que me dice Añadiendo estas dos lineas:
$archivo=$HTTP_POST_FILES[’archivo’][’tmp_name’];
$archivo_name = $HTTP_POST_FILES[’archivo’][’name’];
los archivos adjuntos llegaran a su destino ;)::::pero no se donde va
no se si tengo que modificar el uploader.php o el phpmailer,igual te agradezzco tu ayuda. si de alguna manera podes revisar el codigo que tengo te lo voy a agradecer. saludos
enrique
9 de Mayo de 2006, 05:01:52 pm
Hola. Veo que tus conocimientos son enormes, por eso a ver si me puedes ayudar. Tengo un formulario simple PHP, que utilizo en mi web, la cual se aloja en el servidor de Averroes (Junta de Andalucía). Pues bien, no sé cómo modificar su código para poder enviar archivos adjuntos al destinatario que recibe en emaili. ¿Podrías ayudarme?. Te lo agradecería enormemente. Es una web de un colegio, y necesitamos esta función. Gracias por todo.
alex
11 de Mayo de 2006, 08:09:32 pm
Hola,
Occy: Las líneas que pones se usaban en versiones anteriores de PHP, habría que hacer pruebas para determinar el problema.
Enrique: Envíame el archivo que tienes a [alex at buayacorp dot com].
Saludos
Giancarlo
24 de Mayo de 2006, 01:00:20 am
¿Por qué cuando intento enviar un archivo adjunto que pesa mas de 20 MB en gmail no puedo??? supuestamente gmail tiene un espacio de 2727 MB, entonces ¿a qué se debe???
Gracias
alex
24 de Mayo de 2006, 08:54:38 am
Giancarlo, el tamaño máximo para enviar un archivo adjunto en gmail es 10MB.
Jorge
26 de Mayo de 2006, 05:46:26 pm
como paso un archivo oculto desde el usuario al servidor.
La idea es que el usuario tenga una planilla en su PC
pinche un boton en la web y se actualice una base de datos del servidor.
Hasta ahora
alex
26 de Mayo de 2006, 06:15:16 pm
No se puede hacer eso por motivos de seguridad, me imagino que tendrías que utilizar ActiveX o un Applet, u algún software para el cliente.
Saludos
ricardo
2 de Junio de 2006, 01:06:04 pm
saludos, siempre quise poner un formulario como este, ahora que lo encontré no puedo isntalarlo, ya que quiero cambiar toda mi pagina a php, la verdad es que no se muy bien esto de la programación, pero me gusta y he podido hacer cosas que me facilitan el trabajo, espero me puedas ayudar a francamente por pasos que debo seguir para la instalación de este buen formulario, otra cosa el escrip que me hace la función de solicitar que información falta, cuando pongo el de la muestra no funciona el primer scrip. te lo agradeceré mucho.
Body
5 de Junio de 2006, 10:52:24 am
Me parece muy util, ahora tengo una duda como puedo hacer para subir imagenes temporalmente, explico:
- Tengo un formulario por medio del que doy de alta empresas, pero cada empresa tiene N productos, como puedo hacer para agregar y validar cada imagen de los productos no sabiendo la cantidad y sin llenar mi servidor de archivos temporales?; El problema está en que la imagen la debo tener como archivo no como campo Blob en una tabla temporal, alguien puede ayudarme y si es así escribanme por fabor gracias
Carlos
5 de Junio de 2006, 11:23:18 am
Hola.
Me ha sido de gran ayuda este código fuente, pero tengo un pequeño problema.
Al momento de crear campos de tipo input (text) con el DOM de JavaScript, no puedo colocarlos como campos de solo lectura ósea readonly, y la verdad no he encontrado cual es la línea de comando exacta.
He utilizado algunas líneas de código como la siguiente pero no me han funcionado. Para el caso de esta aplicación seria:
field.readonly = true;
Se que la línea esta errada ya que no funciona.
Espero que me puedas ayudar.
Gracias.
PromocionWeb
5 de Junio de 2006, 12:37:17 pm
Bueno mi comentario es si tienen algun ejemplo para subir imagenes al servidor mediante un sencillo form¿?
Saludos,
Mercedes
alex
5 de Junio de 2006, 02:04:31 pm
Hola,
Ricardo: Para *instalar* este script lo único que debes hacer es copiarlo a un directorio accesible por el servidor web.
Body: Simple, sube las imágenes a un directorio destinado para eso y luego guardas los nombres de dichos archivos en algún lugar (ej. base de datos), de esta manera podrás eliminarlos después si no pasan el proceso de validación.
Carlos: Prueba con field.readOnly = true;
PromocionWeb: Borrando todo código javascript que está presente en el ejemplo debería bastar para el ejemplo simple que pides.
Saludos
Rafael Beas
8 de Junio de 2006, 02:49:02 am
Hola !
Estoy empezando con una pagina de mi facultad, y quiero q me manden sus trabajos, por lo que este script me sirve de mucho, me parece muy bueno, solo que quisiera que me pudieran ayudar diciendome como puedo quitar el campo que dice “para” y que la direccion a la que quiero que se envie sea automatico, es decir ya no tengan q poner la direccion la persona que quiera enviar un archivo…. soy un novato en estos aspectos, necesito mucho su apoyo, gracias de antemano
Braulio
8 de Junio de 2006, 02:57:33 pm
Rafael: En el código HTML sólo quitas las líneas que dicen
Y en el código PHP modificas la parte que dice
por
$mail -> AddAddress ("elcorreo@alquequieresmandar.com");Raul
12 de Junio de 2006, 01:57:41 pm
Estoy probando el script en localhost y me dice que no se ha podido enviar el correo, pero pruebo en el ejemplo online que tienes y me dice lo mismo.
Ahora estoy perdido podrias hacer un breve comentario de como instalar el script y las cosas basicas que hay que cambiar para que funcione
Ramsses
16 de Junio de 2006, 03:59:39 am
Gracias por todo este trabajo que haceis, y el valioso tiempo que nos dedicais, he estado buscando algo como esto en muchos sitios y como no encontraba nada me decidi por buscar un programadores web, que me cobraban por hacer algo similar entre 250 y 300€.
No se mucho de estos temas pero investigando, investigando me resulta hasta facil simplemente con un editor web se pueden modificar muchos apartados y era justamente lo que necesitaba.
Os estoy enormemente agradecido, muchas gracias.
A veces resulta tan fácil hacer feliz a la gente.
Vasco
16 de Junio de 2006, 11:12:53 am
Hola Alex primero déjame felicitarte por este código que ha facilitado para todo el publico, esto se adapta muy bien a mi pagina a lo que pienso hacer, ya le meteré mano para agregarle más campos que necesito y que sea de una vez enviado a mi correo o a una carpeta especifica, te molesto por lo siguiente como podría hacer para que cuando las personas me envíen la foto y el comentario esto se publique de manera automática como se puede observar en este comentario. Necesito hacer esto pues quiero que mis visitantes puedan anunciar alguna venta de producto. Espero tu repuesta.
Raul
16 de Junio de 2006, 01:50:47 pm
Buenas de nuevo
He pasado del localhost y he cogido un espacio en iespana.es, q se supone que admite php, he subido el ejemplo sin tocarlo y los he probado, el resultado es que siempre me da mensaje enviado, pero no recibo nada en las cuentas de correo, he probado con hotmail, lycos y el propio iespana pero nada. ¿puede ser que el servidor iespana no lo admita aunque la pagina diga que se envio? o ¿hay algo que yo hago mal?
Un saludo
Andaluz
16 de Junio de 2006, 04:12:13 pm
Braulio, Alex por favor me podeis poner un ejemplo claro, que el que no sabe es como el que no ve, de como añadir campos al formulario y que me los envie, lo intento con un editor web pero no me envia los campos nuevos solos los que tiene el ejemplo vuestro.
Muchisimas Gracias por el tiempo robado.
alex
17 de Junio de 2006, 12:26:38 pm
Hola,
Ramsses: Muchas gracias por el comentario.
Vasco: Lo que comentas se parece a un “libro de visitas”, te sugiero que busques alguno en hotscripts.com y lo modifiques de acuerdo a tus necesidades, si tienes problemas puedes contactarme en alex at buayacorp dot com.
Raul: Lamentablemente no conozco los servicios y características que ofrecen en iespana.es, te sugiero que le des un vistazo a dotgeek.org (cada mes sortean una cuenta de hosting gratis, sin publicidad).
Andaluz: Lo que tienes que hacer es simplemente agregar un elemento en el HTML y luego recuperar su valor en PHP,
En php puedes recuperar el valor de la variable con
).
$NombreCampo(gracias a la función extract) ó también$_GET['NombreCampo'](si pasas la variable por GET),$_POST['NombreCampo'](si pasas la variable por POST) y$_REQUEST['NombreCampo'](si no estás seguroSaludos
Andaluz
18 de Junio de 2006, 05:13:13 am
Disculpa otra vez Alex pero llevo 4 horas y no se que c…. hago mal tengo en
html: $mail -> Subject = $sbj;
$mail -> Body = $textfield;
$mail -> Body = $msg;
$mail -> IsHTML (true);
Y en php:
Asunto
Campo nuevo
Mensaje
He provado de varias maneras pero solo me manda los campos de siempre, el nuevo no me lo manda y si me manda el “campo nuevo” no me manda el del “mensaje” o uno o otro pero ¿porque no me manda los dos?.
Soy novatisimo en esto.
Andaluz
18 de Junio de 2006, 05:17:41 am
Perdona esto na ha salido bien:
Html:
$mail -> Subject = $sbj;
$mail -> Body = $textfield;
$mail -> Body = $msg;
$mail -> IsHTML (true);
PHP:
Asunto
Campo nuevo
Mensaje
Andaluz
18 de Junio de 2006, 05:28:25 am
Alex. No me deja pegar el codigo te lo mando por emai.
Mil perdones.
alex
19 de Junio de 2006, 06:28:21 pm
Hola Andaluz,
Si te fijas el comentario 128 te darás cuenta que los campos se concatenan…
Andaluz
20 de Junio de 2006, 04:08:34 am
Lo siento Alex, perdona por haberte molestado; pero estoy a punto de tirar la toalla, ¡si vieras las veces que he provado el dichoso formulario!,
Es como hacerle comprender a un burro que esta en un garage. Se que te resultara sumamente sencillo, pero Yo soy el burro y no soy capaz de comprenderlo.
Les estaria enormemente agradecido si a Ti o a alguna alma caritativa que lea este post, me mande por favor un ejemplo, como el que tienes puesto en esta web, completo pero con tres o cuatro campos mas, para que el burro observe donde esta el problema, les estaría infinitamenteeeeee agradecido.
Mi e-mail yhnmoi@terra.es De todas formas muchisimas gracias por tus prontas respuestas.
aprendiz
20 de Junio de 2006, 08:00:01 pm
hola muy bueno el sitio.
soy nuevo en esto del php y quisiera hacer una consulta para poder correr el script que version de php debo tener? es necesario hacer algun cambio en el phpmailer (configurar algún parametro??). Se que son consultas básicas sorry.
carola
27 de Junio de 2006, 02:26:28 am
hola
visite tu pagina y tal vez puedas ayudarme
manejo muy poco todo el tema de los formularios, solo se hacer cosas simples y necesito con urgencia un formulario con un boton “adjuntar archivo” que permita al usuario adjuntar una fotografia.
te agradeceria mucho si pudieras envairme al mail un formulario tipo con estas caracteristicas y el php para poder recibirlo en mi correo
gracias
saludos
carolina
FABRIZIO
3 de Julio de 2006, 10:32:34 am
Hola, como hago para colocar que sea a un solo correo que llegue el archivo? osea que el unico correo donde llegue lo que envien sea en oxigeno@oxigeno.com.ve
alex
3 de Julio de 2006, 09:11:32 pm
Fabrizio, revisa el comentario 122
Saludos
Gustavo Gómez
4 de Julio de 2006, 02:39:15 am
La verdad es que no logré hacerlo funcionar…. ni el ejemplo en su pagina me deja probarlo no se porque será pero tampoco me dice que no se puede enviar el e-mail… lo compie lo instale en mi servidor y lo probé allí me dice que hay un error en la linea 29 que el formato de la sentencia foreach ( $_FILES[”archivos”][”error”] as $key => $error) es erroneo la verdad que no tengo mucha experiencia en PHP… pero no logro que ande
Carlos
14 de Julio de 2006, 12:14:53 pm
Me aparece:
Language string failed to load: instantiatey no puedo envial el mail ni el adjunto. ¿Cómo lo soluciono?
alex
17 de Julio de 2006, 05:32:10 pm
Baja la versión original de phpmailer, ahí incluye los archivos de localización para que te muestre los errores en el idioma seleccionado.
Saludos
Tuusssoo
31 de Julio de 2006, 06:50:18 am
Hola el script es perfecto para lo que quiero hacer pero tengo una pega no consigo que me envie mas de un campo de texto en el mensaje.Enviarme los ficheros y demas perfecto pero eso no lo consigo y mira que he modificado casi todo el codigo.
Por favor si podeis mandarme los archivos modificados indicandome donde esta la modificaciones. Lo he intentado con lo que pone en los comentarios anteriores sobre la misma pregunta pero no se porque no me funciona un saludo a todos y gracias.
PD. fciscojose[@]hotmail.com
Carolina
16 de Agosto de 2006, 02:16:41 am
Hola!!
Vi la aplicación y la considerá muy buena, pero no me fuciona!!!, me dice mensage enviado, todo corre perfectamente, pero el email nunca llega, ?¿?, sin embargo prueba una función que yo tenia SendMail hecha y si que me llega el email, pero esta es incompleta porque yo quiero que me mande 3 archivos adjuntos. Mi pregunta es porque no me llega el correo de tu ejemplo
alex
16 de Agosto de 2006, 02:03:21 pm
Hola Carolina,
No tengo idea porque no funciona el ejemplo en tu caso, puede ser por muchos motivos, revisa los comentarios anteriores.
Saludos
Juan Pablo
16 de Agosto de 2006, 08:15:50 pm
Hola Alex te quiero agradecer por el tiempo que nos dedicas.
Paso a contarte mi duda.
Primera duda, ya intente de un monton de formas para añadir mas campos al formulario y no puedo.
Ya cree un capo nuevo
pero no entiendo de que forma agregar la variable $nuevo en
$mail -> Body = $msg;
Y la segunda duda, es cuando envio archivos adjuntos de alrededor de 3mb,
El problema aca es que en el tiempo que tarda despues que apretaste el boton de “enviar” hasta que carga los archivos adjuntos y los envia, el usuario tal ves no se de cuenta que el mail se esta enviando y cierre la ventana y el mail no llegue a destino. Existe alguna forma de que aparezca un cartelito que diga: “su mensaje con sus archivos adjuntos se estan enviando, por favor espere” y recien cuando el mail ya fue enviado aparezca otro cartelito que diga “su mail fue recibido satisfactoriamente, muchas gracias”
PD: ya revise todos los comentarios y no logre entender lo que necesito. Agradeceria muchisimo su ayuda.
mi mail es juangm88@yahoo.com.ar
Juan Pablo
16 de Agosto de 2006, 09:38:17 pm
Ya solucione eso de añadir mas campos “concatenando”
lo hice asi:
$mail -> Body = “Numero fijo: “.”$msg”.”".”Numero del celular: “.”$numcel”.”".”Calle: “.”$calle”.”".”Departamento: “.”$depar”;
$msg corresponde a un campo para el numero de tel fijo
$numcel corresponde a un campo para el numero de cel
$calle corresponde a un campo para escribir la calle de donde vives
$depar corresponde a un campo para poner el departamento donde vives
Osea que agregue como 4 campos
//———————————————————————–
Pero todavia no resuelvo el problema de cuando envio archivos adjuntos de alrededor de 3mb. El problema aca es que en el tiempo que tarda despues que apretaste el boton de “enviar” hasta que carga los archivos adjuntos y los envia, el usuario tal ves no se de cuenta que el mail se esta enviando y cierre la ventana y el mail no llegue a destino. Existe alguna forma de que aparezca un cartelito que diga: “su mensaje con sus archivos adjuntos se estan enviando, por favor espere” y recien cuando el mail ya fue enviado aparezca otro cartelito que diga “su mail fue recibido satisfactoriamente, muchas gracias”
PD: agradeceria muchisimo su ayuda
alex
16 de Agosto de 2006, 10:08:38 pm
Hola Juan Pablo,
Me parece bien que hayas solucionado una parte de los problemas que mencionaste.
En cuanto a la segunda pregunta primero tienes que considerar que por defecto sólo se puede subir archivos de 2MB (revisa el comentario #82 para más detalles); lo que se me ocurre en este momento es que una vez que presiones el botón para enviar el mail, deshabilites el mismo y a su vez uses uno de estos íconos (lamentablemente no voy a poder enviarte un ejemplo, ya que últimamente ando algo ocupadito).
Saludos
Terraplana
2 de Septiembre de 2006, 02:26:06 am
Saludos amigos yo subi el ejemplo y funciono de maravilla, solo que no se si alguien me pudiera enviar el mismo ejemplo pero eliminando el primer campo y poner una direcci
Velia
10 de Septiembre de 2006, 12:12:48 am
Hola.. estoy creando un formulario que permita adjuntar archivo… no se mucho o mejor dicho nada de PHP pero vi tu ejemplo y creo que es lo que necesito, aunq no sé bien a dónde envia el adjunto…
Lo que quiero es que envie el conenido del formulario a una web incluyendo el archivo adjunto… Qué debo hacer..? Te agardezco la ayda de antemano…
Velia
alex
11 de Septiembre de 2006, 08:15:31 am
Hola Velia,
Si se trata de subir sólo el archivo, hay una parte comentada en el script que te dá una pista de lo que deberías hacer.
Lo mejor es que aprendas por lo menos un poquito de PHP, para saber que está haciendo realmente el código.
Saludos
sharon
16 de Septiembre de 2006, 11:19:39 am
Hola Alex. Muy interesante tu articulo, pero la verdad es que no se porque no me funciona. Baje, descomprimi los archivos, los instale en mi maquina. No hice ningun cambio. Envie un mail con un archivo adjunto, no me sale ningun error hasta me muestra el mensaje que envie correctamente el mail y me muestra que archivo mande, pero no me llega a ninguno de los correos con los que hice la prueba. No se si hay que hacer algun cambio o colocar algun nombre de servidor SMTP o algo. Por favor te agradeceria la ayuda. Al principio pense que estaba tardando en enviar el mail pero espere de un dia a otro y no llega nada. Gracias por la ayuda…..
alex
16 de Septiembre de 2006, 06:58:38 pm
Hola sharon, con qué servidor SMTP estás enviando los correos?
Saludos
Sharon
22 de Septiembre de 2006, 05:09:20 pm
utilizo el mail.uagrm.edu.bo, no se si ese nombre tengo que ponerlo en algun lugar del codigo. Lo que necesito saber es si a los archivos que bajamos tenemos que cambiarle algo.
Sharon
22 de Septiembre de 2006, 05:10:26 pm
o quizas necesite permisos del lado del servidor
alex
22 de Septiembre de 2006, 05:15:49 pm
Revisa como poner la dirección del servidor SMTP en http://www.buayacorp.com/archivos/phpmailer-con-gmail/
Saludos
Sharon
26 de Septiembre de 2006, 09:14:04 am
Mil gracias Alex, me funciono correctamente, ya me llegan los correos con los archivos adjuntos, ahora solo me falta hacer algunas modificaciones sobre el nombre del archivo y otras cositas que no hay problema con eso. Leyendo los mensajes anteriores lo solucionamos. Gracias.
Muy bueno tu articulo.
Saludos
gabriela
30 de Octubre de 2006, 07:16:38 am
Hola que tal, excelente tu ejemplo y tutorial…
estuve intentanto agragar mas campos en el formulario para el cuerpo del mail, pero no me doy cuenta de mi error..Me enviarias el ejemplo con mas campos para el formulario..mil gracias.
gabriela
30 de Octubre de 2006, 07:57:55 am
Hola Yo de nuevo,,e solucionado agregar mas campos por el comentario (145). Gracias a todos.
Christian
31 de Octubre de 2006, 02:12:11 am
Hola, quisiera hacerte una conculta. Estoy tratando de poner un “CAPTCHA” en este formulario, con idea de dejarlo igual al ejemplo que tienes en línea. Hasta ahora no me resulta….¿podrias pasarme el código que utilizas en el ejemplo pero con el captcha agregado?…..de antemano muchas gracias.
Sambora
6 de Noviembre de 2006, 11:23:51 am
Buenas me parece un excelente articulo. felicitaciones Alex, tengo una duda, como podria hacer para adjuntar un archivo q ya tengo en mi servidor y enviar el email con el adjunto sin necesidad de tener que darle click en “Añadir archivo”.
Gracias
Sambora
alex
6 de Noviembre de 2006, 04:26:20 pm
Sambora, quita todo lo relacionado sobre subir archivos, pues sólo necesitarías llamar al método AddAttachment:
$mail -> AddAttachment ('/ruta/fisica/nombre.zip', 'nombre.zip');Saludos
Jorge
11 de Noviembre de 2006, 12:00:51 am
No puedo mandar archivos adjuntos, desde mi computador, me aparece un mensaje. error de Javascript, el objeto no acepta esta propiedad o metodo, desde ya muchas gracias por tu ayuda
oscar
28 de Noviembre de 2006, 04:30:09 pm
Hola Alex.
Sabes te pido por favor, si puedes enviar a mi mail la forma de agregar mas campos al formulario ( campo de telefono) si pudieras darme una mano. Agradecido desde ya
Oscar
zerito
29 de Noviembre de 2006, 01:07:46 pm
XDDDD
ya lo habia leido con otro nombre de las variables, es muy buen codigo. lo unico engorroso es tratar de combinarlo con xsl…
no puedo hacer abstraccion con el javascript desde xsl, pero en fin.
se agradece el codigo.
Oscar Uriel
6 de Diciembre de 2006, 09:43:04 pm
Hola:
buscando en el google me encontre con este sitio y me parecio perfectisimo todo lo que se postea aqui, de hecho este tutorial me parece muy bueno y las dudas de los demas me han ido “aclarando” un poco el panorama.
bien, estoy haciendo una pagina de noticias para que el usuario suba sus noticias, pero me han pedido que en el formulario se presente un boton o enlace para subir archivos a la base de datos, y que la informacion no se envie a la base de datos hasta que el usuario este seguro de querer hacerlo (cuando los datos esten correctos), es decir que se le presente una vista previa de los datos.
he estado probando con los archivos de este tutorial y lo que he conseguido es ingresar datos en el formulario, pero al momento de querer guardarlos en la base de datos, no hace nada, lo unico que si se guardan son las imagenes en la base de datos y en una carpeta que le he asignado.
No se si me explique o si es mucho pedir, pero podrian echarme una manita por favor, se que tienen muchas cosas que hacer y que su tiempo es muy importante, pero podrian orientarme o al menos decirme como podria solucionar este “problemita”.
Se que me echaran una mano y de antemano se los agradezco.
Estoy trabajando con el AppServ (Apache-MySQL-PHP) bajo windows XP.
mercy
7 de Diciembre de 2006, 01:26:38 pm
quiero crear mi cuenta gmail urgente mi correo es almacarti@hotmail.com
JoC
28 de Diciembre de 2006, 04:14:02 pm
hi:)
amio pls soy nuevo en esto recien ando practicando si fueras tan ambale y me explicas como enlazar el codigo:(
sebastian
5 de Enero de 2007, 07:51:18 am
No tienen algun codigo completo??
javier
8 de Enero de 2007, 10:35:17 am
Hola: Tengo una duda porque quiero utilizar el formulario en varios idiomas y no consigo encontrar donde cambio los campos “examinar” y “borrar” cuando adjuntas archivos desde Internet explorer ó “seleccionar archivo” desde safari, supongo que debo definir el idioma en alguna parte pero ¿donde? gracias por todo
jamlong
14 de Enero de 2007, 10:28:27 pm
necesito agregar o quitar campos de tipo de struts dinamicamente los campos son producto de una consulta a la base de datos asi necesito que este campo se replique: si alguien puede hacerme el favor de orientarme le agradesco mucho.
“>
jamlong
14 de Enero de 2007, 10:30:15 pm
necesito agregar o quitar campos de tipo html:select de struts dinamicamente los campos son producto de una consulta a la base de datos asi necesito que este campo se replique: si alguien puede hacerme el favor de orientarme le agradesco mucho.
html:select property=”menMenId”
html:option value=”" /html:option