Foros del Web » Programando para Internet » PHP »

Problema al subir archivo

Estas en el tema de Problema al subir archivo en el foro de PHP en Foros del Web. Hola a todos, estoy desarrollando una aplicación que sube archivos .swf (minijuegos flash) y los guarda en el servidor, como un panel de administración. El ...
  #1 (permalink)  
Antiguo 04/09/2012, 05:32
m3cubo
Invitado
 
Mensajes: n/a
Puntos:
Problema al subir archivo

Hola a todos,

estoy desarrollando una aplicación que sube archivos .swf (minijuegos flash) y los guarda en el servidor, como un panel de administración.
El caso es que en principio funciona bien, ya que los archivos se suben correctamente y funcionan bien. Es decir, el código funciona bien.

Tras mucha prueba y error, he detectado el error, y resulta que surge cuando el archivo es algo más grande (cuando he subido uno que pesaba sobre los 7-8 MB), y entonces, no puede detectarse con $_FILE su ruta temporal, el tipo de archivo, ni el tamaño, sólo el nombre.
Es decir, no suelta la típica alarma, indicando que el tamaño es excesivo, ni nada parecido, sino que simplemente "ignora" el archivo.

Buscando por San Google, he visto que PHP no admitía por defecto archivos de más de 2MB.
Así que he corregido el php.ini, he creado un archivo .htaccess y le he añadido al código lo necesario para que, en teoría, permitiese hasta 30MB.

¡Pero sigue sin funcionar! Y claro, si "ignora" este archivo, entonces no puedo guardarlo en el servidor, etc.

¿Alguien sabe porqué puede ser esto?


¡Saludos y gracias a todos!
  #2 (permalink)  
Antiguo 04/09/2012, 05:50
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Problema al subir archivo

Es una limitación de tu hosting
__________________
la la la
  #3 (permalink)  
Antiguo 04/09/2012, 05:56
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: Problema al subir archivo

Contacta con ellos aver si te pueden permitir más
  #4 (permalink)  
Antiguo 04/09/2012, 06:26
m3cubo
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema al subir archivo

Al final se ha solucionado, lo volví a poner y esperé un tiempo, y, por suerte, no hizo falta nada más.

¡Saludos!
  #5 (permalink)  
Antiguo 04/09/2012, 06:37
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 8 meses
Puntos: 27
Respuesta: Problema al subir archivo

Puedes pasarme el codigo? porfavor el de .htaccess
  #6 (permalink)  
Antiguo 04/09/2012, 11:11
m3cubo
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema al subir archivo

Hola PepeF, claro, te paso lo que puse al crear el archivo .htaccess (que tienes que dejar en la raíz de tu directorio):

Cita:
php_value upload_max_filesize 30M
php_value post_max_size 30M
php_value max_execution_time 300
php_value max_input_time 300
Si quieres que los cambios se apliquen a un solo archivo, puedes poner esto al principio en el archivo PHP que procese y suba el archivo:

Código PHP:
ini_set('post_max_size','30M');
ini_set('upload_max_filesize','30M');
ini_set('max_execution_time','300');
ini_set('max_input_time','300'); 
En este caso, 30 son los megas que quieres que acepte como máximo, y 300 son los segundos que permites al script seguir ejecutándose.

Saludos y suerte!
  #7 (permalink)  
Antiguo 04/09/2012, 12:01
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 8 meses
Puntos: 27
Respuesta: Problema al subir archivo

+1 Gracias.

Pero he puesto esto y no me hace nada

php_value upload_max_filesize 30M
php_value post_max_size 30M
php_value max_execution_time 300
php_value max_input_time 300

o pongo el otro codigo y me sale

Error del Servidor!

Se produjo un error interno en el servidor y le fue imposible completar su solicitud.
  #8 (permalink)  
Antiguo 04/09/2012, 14:41
m3cubo
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema al subir archivo

Hmmmm

Si eso no te funciona, también puedes probar a cambiar el archivo de php.ini

Busca estos códigos y aumenta su valor:

max_execution_time = 1000
max_input_time = 1000
post_max_size = 100M
upload_max_filesize = 100M

Luego, reinicia localhost (si estás trabajando en local), vuelve a abrir la página, y debería funcionar.



Por cierto, para quien me pueda ayudar, tengo un nuevo problema. Esta vez, el script, al permitir archivos de mayor tamaño,
los procesa, y no como antes, que directamente los "ignoraba".
Sin embargo, para los archivos pesados, el script tarda 2-3 min procesando, y este, al ver que tarda mucho, se detiene y
no produce ningún resultado. Sin embargo, tengo puestos 1000 segundos como tiempo de espera, y aunque los aumente, esto no cambia.

¿Cómo puedo asegurarme de que se sube el archivo? El tiempo que tarde no es problema.


También añado la parte del código que se encarga de subir el archivo .swf, por si sirve de ayuda o existe alguna función que resuelva esto, etc.

Código PHP:

/*Variables*/

$archivo=$_FILES["archivo"]["name"];
$temp_archivo=$_FILES["archivo"]["tmp_name"];
$tipo_archivo=$_FILES["archivo"]["type"];

/*_______*/

if($tipo_archivo=="application/x-shockwave-flash")
{

    switch(
$tipo_archivo)
    {
    case
'application/x-shockwave-flash':
    
$extension=".swf";
    break;
    }

    
$nombre_codigo=$nombre_archivo;
    
$nombre_codigo=str_replace(" ","_"$nombre_codigo);
    
$nombre_codigo=$nombre_codigo.$extension;
    
    
copy($temp_archivo"../juegos/$nombre_codigo");
    
    echo 
"¡OK!"//El archivo debería haberse copiado, de haber llegado a este punto.

}else{
//Si el archivo no es .swf o lo ignora
return false;

Saludos.

Última edición por m3cubo; 04/09/2012 a las 15:05
  #9 (permalink)  
Antiguo 05/09/2012, 03:49
m3cubo
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema al subir archivo

Leyendo por Internet, he visto que hay más formas de subir archivos pesados, pero no he encontrado tutoriales.
Por ejemplo, que podían subirse varios archivos XML y luego juntarlos. O subirlo comprimido, y luego descomprimirlo de algun modo. ¿Esto puede hacerse con PHP?

Saludos.
  #10 (permalink)  
Antiguo 05/09/2012, 04:04
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 8 meses
Puntos: 27
Respuesta: Problema al subir archivo

yo tengo un sistema que hace que tu subes el archivo comprimido despues lo descomprime y el archivo comprimido lo borra entonces soolo te deja el archivo ya descomprimido
  #11 (permalink)  
Antiguo 05/09/2012, 04:06
m3cubo
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema al subir archivo

¿Te refieres a código? Si es así, ¿puedes pasarmelo?

PD: ¿Te funcionó al final lo de subir archivos demás de 2MB?
  #12 (permalink)  
Antiguo 05/09/2012, 15:42
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 8 meses
Puntos: 27
Respuesta: Problema al subir archivo

no al final no me funciono.

Código PHP:
Ver original
  1. <?php
  2. // Esto hace que el archivo tiene que ser seleccionado,solo pueden ser las extenciones rar,zip,tar, 7z y que el archivo no puede ser mayor de 2 megas
  3.  
  4. // la variable $extension divide el nombre del archivo subido en el nombre y por otro lado la extension
  5. // ejemplo si tu subes un archivo llamado jaja.zip
  6. // $extension[0] = jaja
  7. // $extension[1] = zip
  8.     $folder = "carpeta/";
  9.     $extension = explode(".",$_FILES['file']['name']);
  10.     $folder1 = "carpeta/$extension[0]";
  11.  
  12.     if($_FILES['file']['name'] == ""){
  13.     echo "Tienes que seleccionar un archivo";
  14.     }else{
  15.     if($extension[1] <> "rar" AND $extension[1] <> "zip" AND $extension[1] <> "tar" AND $extension[1] <> "7z"){
  16.     echo "Solo se permiten las extensiones rar,zip,tar y 7z";
  17.     }else{
  18.     if(file_exists($folder1)){
  19.     echo "El archivo ya existe";
  20.     }else{
  21.     if($_FILES['file']['size'] > "2097152"){
  22.     echo "El tamaño del archivo tiene que ser como maximo de 2 mega";
  23.     }else{
  24.     move_uploaded_file($_FILES['file']['tmp_name'], $folder.$_FILES['file']['name']);
  25.     mysqli_query($connection, "INSERT INTO template(id,template,extension,date,active) VALUES ('', '$extension[0]', '$extension[1]', NOW(), 'No')");
  26.     echo "Archivo subido correctamente";
  27.  
  28. //Descomprime el archivo
  29.     $archivo_zip = "carpeta/$extension[0].$extension[1]";
  30.     $zip = new ZipArchive();
  31.  
  32.     if($zip->open($archivo_zip) === true){
  33.     $zip->extractTo("carpeta/$extension[0]");
  34.     $zip->close();
  35.     }else {
  36.     echo ">Error intentalo nuevamente";
  37.     }
  38.  
  39. // Borra el archivo comprimido
  40.     $archivo = "carpeta/$extension[0].$extension[1]";
  41.     unlink($archivo);
  42.     }}}}
  43. }
  #13 (permalink)  
Antiguo 06/09/2012, 09:46
m3cubo
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema al subir archivo

Hola PepeF, si estás probándolo en un servidor compartido, pide si pueden aplicarte un incremento de tiempo y capacidad en tus archivos. Yo lo pregunté, y me dijeron que al ser compartido, no podían excederlo mucho, pero que a mi en concreto me lo podían aumentar un poco.

Gracias por el código, voy a probarlo.
  #14 (permalink)  
Antiguo 06/09/2012, 10:17
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 8 meses
Puntos: 27
Respuesta: Problema al subir archivo

estoy en localhost
  #15 (permalink)  
Antiguo 07/09/2012, 09:45
 
Fecha de Ingreso: septiembre-2012
Mensajes: 6
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Problema al subir archivo

A mi tambien me interesa lo de que te permita subir mas mb esque a mi cuando subo uno muy grande me ignora todo y no sale nada.
  #16 (permalink)  
Antiguo 07/09/2012, 16:09
m3cubo
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema al subir archivo

Hola 332233, para ello revisa los códigos que proporciono en mi tercer mensaje.
PepeF, es raro que no te funcione en localhost, también puedes modificar el archivo de php.ini

¡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 07:29.