Foros del Web » Programando para Internet » PHP »

Consulta sobre $name = $_FILES['attachment']...

Estas en el tema de Consulta sobre $name = $_FILES['attachment']... en el foro de PHP en Foros del Web. Hola estimados, necesito que me llegue el nombre de un archivo adjunto a mi correo...; fuera del <form></form> anda perfecto: <? $name = $_FILES['attachment']['name'][0]; echo ...
  #1 (permalink)  
Antiguo 12/11/2009, 10:35
Avatar de elsolodigno  
Fecha de Ingreso: agosto-2009
Mensajes: 225
Antigüedad: 14 años, 8 meses
Puntos: 2
Consulta sobre $name = $_FILES['attachment']...

Hola estimados, necesito que me llegue el nombre de un archivo adjunto a mi correo...; fuera del <form></form> anda perfecto:

<? $name = $_FILES['attachment']['name'][0];
echo $name;
?>

Pero lo que necesito es que se ejecute dentro del <form></form> y me llegue el nombre como texto a mi correo; ya probé varias veces pero el campo me llega vacío:

<form>
........
<td><b>Adjuntar archivo 1:</b></td>
<td><input name="attachment[]" type="file" size="45" /></td>

<? $name = $_FILES['attachment']['name'][0]; ?>

<input name="nombrearch" type="hidden" size="30" value="<?=stripslashes(htmlspecialchars($name));?> " />
........
</form>

Será que le única manera es que se haga fuera del <form></form>?. Muchas gracias por su tiempo!.

Última edición por elsolodigno; 12/11/2009 a las 10:51
  #2 (permalink)  
Antiguo 12/11/2009, 11:21
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Consulta sobre $name = $_FILES['attachment']...

Pero ¿anteriormente haz llamado algun formulario? Porque eso que estas indicando solo va a funcionar si anteriormente enviaste la informacion a través de un formulario.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 12/11/2009, 13:45
Avatar de elsolodigno  
Fecha de Ingreso: agosto-2009
Mensajes: 225
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Consulta sobre $name = $_FILES['attachment']...

Hola abimaelrc, se hace todo dentro del formulario, entonces así no funcionaría?; entonces cómo podría hacer para que me lleguen los nombres de los archivos a mi correo?. Gracias nuevamente...
  #4 (permalink)  
Antiguo 12/11/2009, 13:51
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Consulta sobre $name = $_FILES['attachment']...

Cuando vayas a enviar enviar el email, lo llamas de la forma que estas haciendo. Pero te sugiero leer sobre PHPMailer para que puedas enviar adjuntos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 12/11/2009, 14:03
Avatar de elsolodigno  
Fecha de Ingreso: agosto-2009
Mensajes: 225
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Consulta sobre $name = $_FILES['attachment']...

Hola de nuevo abimaelrc, disculpa la molestia pero no te he entendido muy bien...; te paso todo el form:

<form method="post" action="<?=$_SERVER['PHP_SELF'];?>" enctype="multipart/form-data" name="phmailer" onsubmit="return Checkit(this);">
<table>
..................

<td><b>Adjuntar archivo 1:</b></td>
<td><input name="attachment[]" type="file" size="45" /></td>

<? $name = $_FILES['attachment']['name'][0]; ?>

<input name="nombrearch" type="hidden" size="30" value="<?=stripslashes(htmlspecialchars($name));?> " />

.............

<tr>
<td colspan="2" width="100%" class="table_footer">
<input type="hidden" name="submit" value="true" />
<input type="submit" value="<?=$submitvalue;?>" /> &nbsp;
<input type="reset" value="<?=$resetvalue;?>" />
</td>
</tr>
</table>
</form>

Pero a mi correo me llega el campo en blanco...

Ahora si a lo sgte:

<? $name = $_FILES['attachment']['name'][0];
echo $name;
?>

lo agrego fuera del form me lo imprime re bien, pero necesito que todo se ejecute dentro del form, será posible?. Disculpá nuevamente y gracias por tu tiempo.
  #6 (permalink)  
Antiguo 12/11/2009, 14:21
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Consulta sobre $name = $_FILES['attachment']...

No estas haciendo un adjunto. Tienes que hacer varias cosas para poder enviar un adjunto a un correo. Te sugiero que busques lo que te indique (PHPMailer) con eso podras enviar un correo y adjuntar algun archivo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 12/11/2009, 14:58
Avatar de elsolodigno  
Fecha de Ingreso: agosto-2009
Mensajes: 225
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Consulta sobre $name = $_FILES['attachment']...

Te molesto por última vez, te copié una parte del form nada más para no enloqucerte, los adjuntos llegan muy bien a mi correo, pero lo que necesito es que me llegue el nombre del adjunto como texto también; es eso lo que no e me ejecuta dentro de form; si lo hago afuera del form si funciona pero solo para imprimirlo por pantalla, y necesito que llegue a mi correo además del adjunto que llega bien su nombre como texto. Bueno, disculpá tanto embrollo!. Saludos.
  #8 (permalink)  
Antiguo 12/11/2009, 15:03
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Consulta sobre $name = $_FILES['attachment']...

Ok, creo que ahora te entiendo, lo que debes hacer es que cuando envies el adjunto a la misma vez saques el nombre de ese archivo. Me refiero que uses el mismo codigo que haces para subir el archivo al servidor para luego enviarlo, uses la misma variable que tiene el nombre del archivo. Me dejas saber.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 12/11/2009, 15:11
Avatar de elsolodigno  
Fecha de Ingreso: agosto-2009
Mensajes: 225
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Consulta sobre $name = $_FILES['attachment']...

Disculpa pero seguro te estoy volviendo loco..., la única manera en que lo entiendo es haciendo como te comenté:

<td><b>Adjuntar archivo 1:</b></td>
<td><input name="attachment[]" type="file" size="45" /></td>

<? $name = $_FILES['attachment']['name'][0]; ?>

<input name="nombrearch" type="hidden" size="30" value="<?=stripslashes(htmlspecialchars($name));?> " />

Serías tan amable de tirarme un ejemplo?, fuera del form el código <? $name = $_FILES['attachment']['name'][0]; ?> funciona bien pero no me sirve porque me lo imprime en la misma pantalla. Saludos!.
  #10 (permalink)  
Antiguo 12/11/2009, 15:24
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Consulta sobre $name = $_FILES['attachment']...

Suponiendo que en algun lugar del php que procesa el formulario generas el mensaje a enviar..

Código PHP:
//...
$name $_FILES['attachment']['name'][0];
$mensaje="
blah blah
el archivo adjunto se llama: $name
blah blah
"
;
/*...
enviar el email
...
*/ 
  #11 (permalink)  
Antiguo 12/11/2009, 15:37
Avatar de elsolodigno  
Fecha de Ingreso: agosto-2009
Mensajes: 225
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Consulta sobre $name = $_FILES['attachment']...

Estimado yo lo entiendo, pero todo se procesa dentra del formulario, si yo hago esto fuera del form:

<? $name = $_FILES['attachment']['name'][0];
echo $name;
?>

anda perfecto!, pero sol sirve para imprimir en pantalla

Necestito que se ejecute dentro dentro del form ya que necesito que me llegue a mi correo y todo se procesa dentro del form, no tengo divido el form del enviar.php está todo junto no sé si me explico bien. Gracias nuevamente!.
  #12 (permalink)  
Antiguo 12/11/2009, 15:39
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Consulta sobre $name = $_FILES['attachment']...

"Todo se procesa dentro del formulario"? Y donde esta el codigo que envia el mail?
  #13 (permalink)  
Antiguo 12/11/2009, 16:16
Avatar de elsolodigno  
Fecha de Ingreso: agosto-2009
Mensajes: 225
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Consulta sobre $name = $_FILES['attachment']...

disculpá mi ignorancia..., estoy dndo mis primeros pasos...

éste codigo a continuación está antes del form:

If($_POST['submit']==true) {
extract($_POST, EXTR_SKIP);

// Check the form for errors

If(trim($yourname)=="") {
$error.="You did not enter your name!<br />";
}

If(trim($youremail)=="") {
$error.="You did not enter your email!<br />";
} Elseif(!eregi("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}\$",$youremail)) {
$error.="Invalid email address.<br />";
}

If(trim($emailsubject)=="") {
$emailsubject=$defaultsubject;
}

If(trim($yourmessage)=="") {
$error.="You did not enter a message!<br />";
}

// Verify Attchment info

If($allowattach > 0) {

//Loopish

For($i=0; $i <= $allowattach-1; $i++) {

If($_FILES['attachment']['name'][$i]) {

$ext=get_ext($_FILES['attachment']['name'][$i]);
$size=$_FILES['attachment']['size'][$i];
$max_bytes=$max_file_size*1024;

//Check if the file type uploaded is a valid file type.

If(!in_array($ext, $allowtypes)) {

$error.= "Extensión inválida ".$_FILES['attachment']['name'][$i].", sólo ".$types." es permitido.<br />";

//Check the size of each file

} Elseif($size > $max_bytes) {
$error.= "Su archivo: ".$_FILES['attachment']['name'][$i]." es demasiado grande. Máximo permitido ".$max_file_size."kb.<br />";
}

} // If Files
$name=$_FILES['attachment']['name'][0];
} // For

Es acá donde agrego $name=$_FILES['attachment']['name'][0]; y en el from una varible para que llegue al email?. GRacias!.
  #14 (permalink)  
Antiguo 12/11/2009, 16:28
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Consulta sobre $name = $_FILES['attachment']...

Si por ahi va, seria dentro del If($_FILES['attachment']['name'][$i]) donde debes agregar una linea como esa (no exactamente igual si vas a enviar mas de un archivo)

Y luego en donde se genere el cuerpo del email a enviar agregas la(s) variable(s) al cuerpo del mensaje
  #15 (permalink)  
Antiguo 12/11/2009, 17:09
Avatar de elsolodigno  
Fecha de Ingreso: agosto-2009
Mensajes: 225
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Consulta sobre $name = $_FILES['attachment']...

Perfecto, hasta ahi todo bien, si hago un echo mi imprime en pantalla bien, pero cuando agrego dentro del from para que me llegue a mi correo llega en blanco:

Ej.:
</form>
<input name="archadj1" type="hidden" size="30" value="<?=stripslashes(htmlspecialchars($name));?> " />
</form>


Será porque está antes del envío?, cómo hago para que me llegue el nombre del archivo al correo?. Gracias!.
  #16 (permalink)  
Antiguo 13/11/2009, 08:55
Avatar de elsolodigno  
Fecha de Ingreso: agosto-2009
Mensajes: 225
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Consulta sobre $name = $_FILES['attachment']...

Estimados los molesto por última vez, ya que no hay forma de que me llegue el nombre del archivo como texto a mi correo:

Entonces les vuelvo a dar una pista: Necesito que me llegue a mi correo el nombre en forma de texto de un archivo adjunto, el problema al parecer que no lo carga; a continuación parte del código:

...........

If($_FILES['attachment']['name'][$i]) {

$name=$_FILES['attachment']['name'][0]; //Estoy probando con uno solo
$ext=get_ext($_FILES['attachment']['name'][$i]);
$size=$_FILES['attachment']['size'][$i];
$max_bytes=$max_file_size*1024;
...........

En el:
<form>
...........
<td><b>Adjuntar archivo 1:</b></td>
<td><input name="attachment[]" type="file" size="45" /></td>

<input name="nombadj" type="hidden" size="30" value="<?=stripslashes(htmlspecialchars($name));?> " />
...........
</form>

éste último input lo utilizo para guardar el nombre del archivo y que me llegue a mi correo; el problema radica que el campo llega en blanco, cuál podrá ser el inconveniente?.

Nota: Si agrego el sgte. código fuera del <form>:

<? $name=$_FILES['attachment']['name'][0];
echo $name;
?>

me imprime bien el nombre del archivo en pantalla, pero lo que necesito es que me llegue a mi correo. Será que dentro del <form> no se puede ejecutar?.

Muchas gracias por su tiempo. Trataré de no jorobar más con el tema!. Saludos!.
  #17 (permalink)  
Antiguo 13/11/2009, 09:07
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Consulta sobre $name = $_FILES['attachment']...

No necesitas ponerlo dentro del form, solo necesitas agregarselo al mensaje como ya dije un par de veces.

Pon el codigo completo.
  #18 (permalink)  
Antiguo 13/11/2009, 09:11
Avatar de elsolodigno  
Fecha de Ingreso: agosto-2009
Mensajes: 225
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Consulta sobre $name = $_FILES['attachment']...

Disculpa estimado, no sé como agregarlo al mensaje..., a éste?:

//Message

$message = "--".$boundary."\n";
$message.="Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$message.="Content-Transfer-Encoding: quoted-printable\n";
$message.="\n";
$message.="$yourmessage";
$message.="$nombadj";
$message.="$tamano1";
$message.="$cantidad1";
$message.="$papel1";
$message.="$tamano2";
$message.="$cantidad2";
$message.="$papel2";
$message.="$tamano3";
$message.="$cantidad3";
$message.="$papel3";
$message.="$tamano4";
$message.="$cantidad4";
$message.="$papel4";
$message.="$tamano5";
$message.="$cantidad5";
$message.="$papel5";
$message.="\n";
  #19 (permalink)  
Antiguo 13/11/2009, 09:19
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Consulta sobre $name = $_FILES['attachment']...

Igual que como agrega los demas datos

$message.="$name";
  #20 (permalink)  
Antiguo 13/11/2009, 12:37
Avatar de elsolodigno  
Fecha de Ingreso: agosto-2009
Mensajes: 225
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Consulta sobre $name = $_FILES['attachment']...

Ahora sí!, muchas gracias por todo a los dos!. Saludos!.
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 17:18.