Foros del Web » Programando para Internet » PHP »

Script upload de archivos

Estas en el tema de Script upload de archivos en el foro de PHP en Foros del Web. Bueno, estoy intentando hacer un script para upload de archivos, buscando código de ejemplo y leyendo el manual, de momento lo más básico que es ...
  #1 (permalink)  
Antiguo 05/02/2004, 10:52
 
Fecha de Ingreso: enero-2003
Mensajes: 75
Antigüedad: 21 años, 2 meses
Puntos: 0
Script upload de archivos

Bueno, estoy intentando hacer un script para upload de archivos, buscando código de ejemplo y leyendo el manual, de momento lo más básico que es que me suba el archivo no me funciona, ¿me podríais decir que es lo que está mal?

formulario.php:
Código PHP:
<form enctype="multipart/form-data" action="subir.php" method="post">
<
input type="hidden" name="MAX_FILE_SIZE" value="100000000">
Archivo: <input name="fichero" type="file">
<
input type="submit" value="Enviar">
</
form
subir.php:
Código PHP:
<?php 
echo 
    
'Nombre fichero = '$_FILES['fichero']['name'] .'<br>'.
    
'Nombre fichero temporal = '$_FILES['fichero']['tmp_name'] .'<br>'.
    
'Tipo de fichero = '$_FILES['fichero']['type'] .'<br>'.
    
'Tamaño del fichero = '$_FILES['fichero']['size'] .'bytes<br>'.
    
'Error = '$_FILES['fichero']['error'] .'<br>'.
    
'Abrir fichero = <a href="index/Pruebas/subir_archivos/'$_FILES['fichero']['name'] .'">'$_FILES['fichero']['name'] .'</a><br>'.
    
'Debug : ';
print_r($_FILES);// Esto es redundante, pero bueno.
if (is_uploaded_file($_FILES['fichero']['tmp_name'])) {
    
move_uploaded_file($_FILES['fichero']['tmp_name'] , 'index/Pruebas/subir_archivos/'$_FILES['fichero']['name']);
}
else
{
      switch(
$_FILES['fichero']['error'])
      {
    case 
0//no error; possible file attack!
        
echo "Hubo un problema con el fichero.";
        break;
    case 
1//uploaded file exceeds the upload_max_filesize directive in php.ini
             
echo "El fichero que intentas subir es demasiado grande.";
             break;
    case 
2//uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the html form
             
echo "El fichero que intentas subir es demasiado grande.";
             break;
    case 
3//uploaded file was only partially uploaded
             
echo "El fichero que intentas subir fue subido sólo parcialmente.";
             break;
    case 
4//no file was uploaded
             
echo "El fichero no fue subido.";
             break;
    default: 
//a default error, just in case!  :)
             
echo "Hubo un problema con el fichero.";
             break;
    }
}
?>
Los errores que me da php son:
Debug : Array ( [fichero] => Array ( [name] => PIC_07.JPG [type] => image/jpeg [tmp_name] => e:\tmp\php1253.tmp [error] => 0 [size] => 324469 ) )
Warning: move_uploaded_file(index/Pruebas/subir_archivos/PIC_07.JPG): failed to open stream: No such file or directory in E:\WWW\index\Pruebas\subir_archivos\subir.php on line 14
Warning: move_uploaded_file(): Unable to move 'e:\tmp\php1253.tmp' to 'index/Pruebas/subir_archivos/PIC_07.JPG' in E:\WWW\index\Pruebas\subir_archivos\subir.php on line 14

La carpeta index\Pruebas\subir_archivos\existe, de echo es la misma en la que está el script.

También he preguntado por si acaso tuviera mal configurado el servidor, el post es este

Echadme un cable please!!!
__________________
Saludos, Mich

Última edición por Mich Buchanan; 05/02/2004 a las 11:00
  #2 (permalink)  
Antiguo 05/02/2004, 12:18
 
Fecha de Ingreso: enero-2003
Mensajes: 75
Antigüedad: 21 años, 2 meses
Puntos: 0
No me ha respondido nadie, pero bueno ya está solucionado, he cambiado un detallito y ya funciona, es sólo esta parte:


Código PHP:
if (is_uploaded_file($_FILES['fichero']['tmp_name'])) {
    
move_uploaded_file($_FILES['fichero']['tmp_name'] , $_SERVER['DOCUMENT_ROOT'] .'/index/Pruebas/subir_archivos/'$_FILES['fichero']['name']);

parece que faltaba por añadir el $_SERVER['DOCUMENT_ROOT'] al path para guardar la imagen.
__________________
Saludos, Mich
  #3 (permalink)  
Antiguo 13/02/2004, 08:55
 
Fecha de Ingreso: mayo-2003
Ubicación: Albacete
Mensajes: 20
Antigüedad: 20 años, 11 meses
Puntos: 0
¿Y no se puede limitar la extension de los archivos a subir?

Gracias.
__________________
El saber no ocupa lugar.
  #4 (permalink)  
Antiguo 13/02/2004, 09:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues si Luison .. en:
$_FILES['fichero']['type'] tienes el formato MIME del archivo que has subido (ojo que se valida cuando ya ha subido el archivo al servidor . .no antes, eso sería taréa de javascript en tal caso).

EL formato MIME de un archivo se lee directamente del própio archivo (cabeceras) y no depende de la extensión del archivo en sí .. la cual podría ser "adulterada"; ejemplo un .exe lo cambias a .txt .. Con el "type" se verificaría su formato MIME y pese que el archivo diga su extensión que es .txt .. el "MIME" dirá que es un tal/tal ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 13/02/2004, 12:18
 
Fecha de Ingreso: mayo-2003
Ubicación: Albacete
Mensajes: 20
Antigüedad: 20 años, 11 meses
Puntos: 0
Muchas gracias.
__________________
El saber no ocupa lugar.
  #6 (permalink)  
Antiguo 19/02/2004, 18:33
 
Fecha de Ingreso: febrero-2004
Mensajes: 138
Antigüedad: 20 años, 2 meses
Puntos: 2
Bueno, yo tengo el script de otra forma:
es el de la pagina php:
<?
//tomo el valor de un elemento de tipo texto del formulario
$cadenatexto = $_POST["cadenatexto"];
echo "Escribió en el campo de texto: " . $cadenatexto . "<br><br>";

//datos del arhivo
$nombre_archivo = $HTTP_POST_FILES['userfile']['name'];
$tipo_archivo = $HTTP_POST_FILES['userfile']['type'];
$tamano_archivo = $HTTP_POST_FILES['userfile']['size'];
//compruebo si las características del archivo son las que deseo
if (!((strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpeg")) && ($tamano_archivo < 100000))) {
echo "La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif o .jpg<br><li>se permiten archivos de 100 Kb máximo.</td></tr></table>";
}else{
if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], $nombre_archivo)){
echo "El archivo ha sido cargado correctamente.";
}else{
echo "Ocurrió algún error al subir el fichero. No pudo guardarse.";
}
}
?>
(No se quien lo hizo).
Bue, voy al grano, lo que yo quiero es que cuando se suba el archivo, se me envie un mail notificandome los resultados.
Porfa Respondan Rapido
__________________
De mucho estudiar nadie se murió, pero mas vale no arriesgarse
  #7 (permalink)  
Antiguo 19/02/2004, 21:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Bue, voy al grano, lo que yo quiero es que cuando se suba el archivo, se me envie un mail notificandome los resultados.
pues Usa la función mail() .. mas info en las FAQ's de este foro y en www.php.net/mail

Cita:
Porfa Respondan Rapido
El comentario está fuera de lugar .. Forosdelweb.com es un sistio donde la gente participa de forma desinteresada .. así que si coincide que alguien llega aquí y sabe la respuesta, tal vez se anime a contextar . .pero no lo va hacer má rápido por qué a ti te urja. Así que paciencia.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 19/02/2004, 21:57
 
Fecha de Ingreso: febrero-2004
Mensajes: 138
Antigüedad: 20 años, 2 meses
Puntos: 2
Gracias por la informacion, perdonen por lo de "respondan rapido", pero mi intencion no era apurar a nadie.


Saludos
__________________
De mucho estudiar nadie se murió, pero mas vale no arriesgarse
  #9 (permalink)  
Antiguo 24/02/2004, 14:19
 
Fecha de Ingreso: febrero-2004
Mensajes: 1
Antigüedad: 20 años, 1 mes
Puntos: 0
Que tal!!

Mi problema es que eh probado con un monton de scripts, todos me funcionan perfecto. El tema es que cuando quiero subir archivos de mas de 1 mega y le doy submit, me aparece el error de no se encontro el servidor!!!!!! en seguida.. No se por que es..

Yo no pido que sea rapido pero agradezco la respuesta de cualquiera!!!!! GRACIAS!!
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 00:08.