Foros del Web » Programando para Internet » PHP »

Problema con move_uploaded_file y archivos superiores a 2 MB

Estas en el tema de Problema con move_uploaded_file y archivos superiores a 2 MB en el foro de PHP en Foros del Web. Saludos a todos en primer lugar. Mi problema es el siguiente: este script de php funciona bien hasta que intento enviar ficheros iguales o superior ...
  #1 (permalink)  
Antiguo 20/02/2008, 07:33
prp
 
Fecha de Ingreso: febrero-2008
Mensajes: 2
Antigüedad: 16 años, 2 meses
Puntos: 0
Problema con move_uploaded_file y archivos superiores a 2 MB

Saludos a todos en primer lugar.

Mi problema es el siguiente: este script de php funciona bien hasta que intento enviar ficheros iguales o superior a 2 MB (los valores recogidos por $_FILES estan en blanco o 0).

Estoy con windows server 2003, php5 y apache2.

Este es el formulario que utilizo:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<form action="subearchivo.php" method="post" enctype="multipart/form-data">
<!-- limite puesto a 10 mb en bytes -->
<input type="hidden" name="MAX_FILE_SIZE" value="10485760">
<br>
<br>
<b>Enviar un nuevo archivo: </b>
<br>
<input name="userfile" type="file">
<br>
<input type="submit" value="Enviar">
</form>
</body>
</html>

Y este es el script en php:

<?php
//datos del arhivo
$nombre_archivo = $_FILES['userfile']['name'];
$tipo_archivo = $_FILES['userfile']['type'];
$tamano_archivo = $_FILES['userfile']['size'];
echo $nombre_archivo."<br>";
echo "<br>".$tipo_archivo."<br>";
echo $tamano_archivo."<br>";

if ($tamano_archivo > 10485760){
echo "El tamaño del archivo no es correcto. <br><br><table><tr><td><li>se permiten archivos de 10 MB máximo.</td></tr></table>";
}else{
if (move_uploaded_file($_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.";
}
}
?>

También he cambiado los siguientes parámetros del php.ini con los valores que le siguen:

- file_uploads = On
- upload_tmp_dir ="c:/PHP/upload
- memory_limit = 128M
- upload_max_filesize = 12M
- max_execution_time = 300
- post_max_size = 14M
- max_input_time = 120

También en el httpd.conf del apache cambié el parámetro:

- limitreguestbody 30000000

No se si tengo que configurar alguna cosa mas pero el caso es que sigue sin hacerme el upload de ficheros de mas de 2 MB.
  #2 (permalink)  
Antiguo 20/02/2008, 07:51
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
Re: Problema con move_uploaded_file y archivos superiores a 2 MB

Prueba modificando esta linea en el archivo ini, del php
Código:
  upload_max_filesize = 2M
Ponle otro valor 10M, para tu caso. Aunque ten en cuenta que si haces esto, todas las aplicaciones que cargen archivos lo haran con ese tope. es extraño que no funcione con el hidden...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #3 (permalink)  
Antiguo 20/02/2008, 09:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problema con move_uploaded_file y archivos superiores a 2 MB

El campo hidden MAX_FILE_SIZE solo sirve para limitar el tamaño máximo desde el cliente, no sirve para modificar en el server nada.

Saludos.
  #4 (permalink)  
Antiguo 20/02/2008, 10:50
prp
 
Fecha de Ingreso: febrero-2008
Mensajes: 2
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Problema con move_uploaded_file y archivos superiores a 2 MB

Parece ser que no se me actualizaba el php.ini, revisados todos los parámetros ahora si que funciona. Por cierto, se me olvido decir que esto lo estaba probando en un servidor local. Ahora haré pruebas en un servidor en internet.

Saludos y gracias!!.
  #5 (permalink)  
Antiguo 22/02/2008, 16:42
Avatar de bandolera_triste  
Fecha de Ingreso: noviembre-2007
Mensajes: 136
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Problema con move_uploaded_file y archivos superiores a 2 MB

cual es mi error en este codigo??


$archivo = $_FILES["userfile"]["name"];

if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {

echo "El archivo ". $_FILES['userfile']['name'] ." fue cargado
satisfactoriamente.\n";
echo "Mostrando su contenido\n";
echo $archivo."<br>";
echo "<br>".$extension."<br>";
echo $tamano."<br>";

} else {
echo "Posible ataque de carga de archivo: ";
echo "nombre de archivo '". $HTTP_POST_FILES['userfile']['tmp_name'] . "'.";
}
$uploaded_dir = ".\maravillas\sistema\fotos";

$path = $uploaded_dir . $archivo;

if ($tamano > 10485760){
echo "El tamaño del archivo no es correcto. <br><br><table><tr><td><li>se permiten archivos de 10 MB máximo.</td></tr></table>";
}else{

if (move_uploaded_file($_FILES["userfile"]["tmp_name"], $path)){

echo "El archivo ha sido cargado correctamente.";
}else{
echo "Ocurrió algún error al subir el fichero. No pudo guardarse.";
}
}

**************************************
este es el error ke me dice

El archivo 27 de mayo 2007.gif fue cargado satisfactoriamente. Mostrando su contenido 27 de mayo 2007.gif




Warning: move_uploaded_file(.\maravillas\sistema27 de mayo 2007.gif) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\xampp\htdocs\maravillas\sistema\ingresar_r2.php on line 42

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\xampp\tmp\phpB6B3.tmp' to '.\maravillas\sistema27 de mayo 2007.gif' in C:\xampp\htdocs\maravillas\sistema\ingresar_r2.php on line 42
Ocurri� alg�n error al subir el fichero. No pudo guardarse.
  #6 (permalink)  
Antiguo 22/02/2008, 16:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problema con move_uploaded_file y archivos superiores a 2 MB

El problema es que siempre trata de evitar usar espacios en los nombres de archivo, ya que suelen causar problemas, es mejor si le quitas los espacios.

También asegurate de que el directorio destino exista y tienes permisos para escribir en el.

Saludos.
  #7 (permalink)  
Antiguo 22/02/2008, 16:51
Avatar de bandolera_triste  
Fecha de Ingreso: noviembre-2007
Mensajes: 136
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Problema con move_uploaded_file y archivos superiores a 2 MB

este codigo si funciona pero no puedo especificar una carpeta en especifico
me lo inserta donde esta mi script

if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {

echo "El archivo ". $_FILES['userfile']['name'] ." fue cargado satisfactoriamente.\n";
echo "Mostrando su contenido\n";
echo $archivo."<br>";
echo "<br>".$extension."<br>";
echo $tamano."<br>";
// readfile($HTTP_POST_FILES['userfile']['tmp_name']);
} else {
echo "Posible ataque de carga de archivo: ";
echo "nombre de archivo '". $HTTP_POST_FILES['userfile']['tmp_name'] . "'.";
}


if ($tamano > 10485760){
echo "El tamaño del archivo no es correcto. <br><br><table><tr><td><li>se permiten archivos de 10 MB máximo.</td></tr></table>";
}else{
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $archivo)){
echo "El archivo ha sido cargado correctamente.";
}else{
echo "Ocurrió algún error al subir el fichero. No pudo guardarse.";
}
}
  #8 (permalink)  
Antiguo 22/02/2008, 16:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problema con move_uploaded_file y archivos superiores a 2 MB

Necesitas especificar la carpeta, o mas bien la ruta completa a la carpeta donde quieres, para eso es el segundo parámetro de move_uploaded_file..

Saludos.
  #9 (permalink)  
Antiguo 25/02/2008, 11:34
Avatar de bandolera_triste  
Fecha de Ingreso: noviembre-2007
Mensajes: 136
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Problema con move_uploaded_file y archivos superiores a 2 MB

si especifico la ruta
$uploaded_dir = ".\maravillas\sistema\fotos\.";
$path = $uploaded_dir . $archivo;

move_uploaded_file($_FILES['userfile']['tmp_name'], $path)

pero si espesifico la ruta ya no la sube..
como detalle uso windows vista
no se si ese sea el problema?
  #10 (permalink)  
Antiguo 25/02/2008, 11:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problema con move_uploaded_file y archivos superiores a 2 MB

Prueba usar la función file_exists para determinar si existe la ruta:
Código PHP:
if( !file_exists$uploaded_dir ) ) {
      die( 
"No existe: $uploaded_dir" );

Si te marca que no existe, es porque tienes mal la ruta.

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 22:10.