Foros del Web » Programando para Internet » PHP »

Scripot de Upload ¿No sirve con Archivos de Excel? Ayuda

Estas en el tema de Scripot de Upload ¿No sirve con Archivos de Excel? Ayuda en el foro de PHP en Foros del Web. Que tal, tengo un formulario que toma un archivo, lo pasa a un script y se guarda en una carpeta del servidor. Es un Upload, ...
  #1 (permalink)  
Antiguo 12/06/2003, 08:52
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 22 años, 3 meses
Puntos: 4
Scripot de Upload ¿No sirve con Archivos de Excel? Ayuda

Que tal, tengo un formulario que toma un archivo, lo pasa a un script y se guarda en una carpeta del servidor. Es un Upload, tomado de www.miscodigos.com

El Formulario es:

form action="subir.php" method="post" name="miformu" enctype="multipart/form-data">
<div align="center">
<input name="archivo" type="file">
<br>
<br>
<input type="submit" name="Submit" value="Enviar">
</div>
</form>






Y el script que sube el archivo es este, llamado subir.php

<?php
$extension = explode(".",$archivo_name);
$num = count($extension)-1;
if($extension[$num] == "zip")
{
if($archivo_size < 30000)
{
if(!copy($archivo, "micarpeta/carpeta2/".$archivo_name))
{
echo "error al copiar el archivo";
}
else
{
echo "archivo subido con exito";
}
}
else
{
echo "el archivo supera los 30kb";
}
}
else
{
echo "el formato de archivo no es valido, solo zip";
}
?>




Funciona bien todo lo he probado con archivos .zip, .doc. .gif

Lo que ocurre es que necesito este script para que solo se suban archivos de excel osea .xls pero en la línea que es:

if($extension[$num] == "zip") le pongo xls

Pruebo el script y justo con esta extensión falla. Por que sera?


Agradezco la ayuda.
  #2 (permalink)  
Antiguo 12/06/2003, 10:23
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 22 años, 7 meses
Puntos: 9
No haz checado en el tamaño del archivo?
  #3 (permalink)  
Antiguo 12/06/2003, 10:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Y que eso de "falla" .. Algo hará el script .. o algún error dará PHP .. Si lo especificas sería lo ideal.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 12/06/2003, 10:54
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 22 años, 3 meses
Puntos: 4
Lo del tamaño de archivo si le he checado.
Simplmente no da error es lo más raro.

Tengo todo configurado para que reciba archivos de Excel................y se queda en el IF y sale:

el formato de archivo no es valido, solo xls";

Siendo que el archivo es xls y el script configurado.

¿Que sera?
__________________
EL LIMITE ES EL UNIVERSO
  #5 (permalink)  
Antiguo 12/06/2003, 11:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Pues si pones el código que estás usando con tu modificación para .xls sería lo ideal .. puede ser que tengas mal construido tu condicional ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 12/06/2003, 11:04
Avatar de Rycmo  
Fecha de Ingreso: abril-2003
Mensajes: 188
Antigüedad: 20 años, 11 meses
Puntos: 0
<form method="post" action="upload.php" enctype="multipart/form-data">
<input name="userfile[]" type="file">
<input name="userfile[]" type="file">
<input name="userfile[]" type="file">
<input name="userfile[]" type="file">
<input name="userfile[]" type="file">
<input name="userfile[]" type="file">
<input type="submit" value="Upload!!!" >
</form>


<?
for($i=0;$i<sizeof($userfile);$i++)
{
if(!$userfile_size[$i])
continue;

$UPLOAD = fopen( $userfile[$i], "r" );
$contents = fread( $UPLOAD,$userfile_size[$i]);
fclose( $UPLOAD );
$SAVEFILE = fopen("upload//".$userfile_name[$i], "wb" );
fwrite( $SAVEFILE, $contents,$userfile_size[$i] );
fclose( $SAVEFILE );
}
echo "Server HaD Receive the Upload Files!";

?>


Lo encontre en webtutorial, no se si te sirva
un saludo
__________________
La mayoría de las ideas fundamentales de la ciencia son esencialmente sencillas y, por regla general pueden ser expresadas en un lenguaje comprensible para todos.
  #7 (permalink)  
Antiguo 12/06/2003, 11:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Rycmo .. lamentablemente los "códigos" de muchas "webs" están bastante anticuados ...

Todo ese fread() .. fwrite() que hay hace se hace o bien con copy() o con move_uploaded_file() ...

Tambíen asumen como globlales las variables .. Eso no es seguro .. debería usa los arrays superglobales (en este caso $_FILE ...)

Un saludo,

pd: No es una crítica a tí Rycmo .. más bien es para "informar" que en la red hay muchoooo código póco actualizado.
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 12/06/2003, 11:52
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 22 años, 3 meses
Puntos: 4
El codigo es este:




<?php
$extension = explode(".",$archivo_name);
$num = count($extension)-1;
if($extension[$num] == "xls")
{
if($archivo_size < 30000)
{
if(!copy($archivo, "micarpeta/carpeta2/".$archivo_name))
{
echo "error al copiar el archivo";
}
else
{
echo "archivo subido con exito";
}
}
else
{
echo "el archivo supera los 30kb";
}
}
else
{
echo "el formato de archivo no es valido, solo xls";
}
?>
__________________
EL LIMITE ES EL UNIVERSO
  #9 (permalink)  
Antiguo 12/06/2003, 13:48
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Hola,

Haz un echo $archivo_name para ver el nombre de fichero que ha recibido. Recuerda que las comparaciones normales en PHP distinguen mayusculas de minusculas, asi que si estas subiendo un .XLS no te funciona el codigo ya que no es igual a .xls.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 12/06/2003, 16:30
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 22 años, 3 meses
Puntos: 4
Josemi..................era eso ponerlo en Mayusculas XLS...................gracias. Pero mira que falla en esto:

Tengo gran cantidad de archivos de excel.

No sé por qué Unos tienen extensión XLS en Mayúscula y otros xls en minúscula.

Como podría arreglar el script para que puedan subirse de los dos modos? en Mayuscula y en Minúscula.

He consultado el libro que tengo y no dice nada.

Gracias

Última edición por jpogsistem; 12/06/2003 a las 16:46
  #11 (permalink)  
Antiguo 12/06/2003, 16:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Pues haz tu comparación en minusculas todo forzando a tus variables con la función strtolower():


Código PHP:
if(strtolower($extension[$num]) == "xls"
Pero por seguridad .. si en lugar de obtener el "string" de tu archivo obtubieses su formato MIME sería lo ideal .. El fomato MIME se lee del archivo y no de su nombre ..

En tu ejemplo .. en $archivo_type tendrías el formato MIME .. para un .xls sería nomeacuerdo/xls ..

Puedes ver la mayoría de formato MIME en:
http://www.w3schools.com/media/media_mimeref.asp

EL "libro" .. usalo para introducción de un tema .. Para complementar y sobre todo para ver lo que hoy en día se usa :

www.php.net/manual/en

(Te lo recomiendo .. lee ahí como usar los arrays superglobales $_FILE por la seguridad de tus scripts ..)


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 05:28.