Subir Archivos (grandes) por php

Iniciado por schumacher, 22 Octubre 2008, 01:38 AM

0 Miembros y 1 Visitante están viendo este tema.

schumacher

...buenas
...de este tema eh encontrado bastante codigo y estuve estudiandolo un buen rato
...pero ni uno me ha resultado hasta ahora

...uno de los problemas puede ser el hosting, la verdad a un no lo se, lo estoy haciendo aca "000webhost"
...pero no se que estoy haciendo mal porque aun no lo entiendo del todo
...me podrian ayudar con un ejemplo? de como subir un archivo mediante php
...yo me las arreglo con eso despues

saludos!

PD: por ejemplo es ese hosting donde dice permisos, en la carpeta donde quiero subir lsoarchivos dice esto "drwxr-xr-x" no se que significa >.<

PD2: me sale este error con algunos de los codigos


Warning: move_uploaded_file(home/a9890303/public_html/uploads/id.txt) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/a9890303/public_html/upload.php on line 5

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpLENmGM' to 'home/a9890303/public_html/uploads/id.txt' in /home/a9890303/public_html/upload.php on line 5


...lo que entiendo es que no lo puede mover? es por los permisos?


SOLUCION:
...si por los permisos
Citar//Important: Make sure this folders permissions (CHMOD) is 0777!

si no sirve el post lo borran ^^

saludos!

*****************************
sucedio otro problema no puedo subir archivos como de 4MB... para eso q tengo que hacer?



#!drvy

Podrías publicar el code y así nos facilitas la adivinación xD

schumacher

#2
ok^^ jejeje

formulario.html

<html>
<head>
<title>PHP File Upload Example</title>
</head>
<body>
<form enctype="multipart/form-data" method="post" action="upload.php">
<input type="file" name="fileToUpload" /><br />
<input type="submit" value="Upload File" />
</form>
</body>
</html>


upload.php

<?php
echo "<table border=\"1\">";
echo 
"<tr><td>Client Filename: </td>
   <td>" 
$_FILES["fileToUpload"]["name"] . "</td></tr>";
echo 
"<tr><td>File Type: </td>
   <td>" 
$_FILES["fileToUpload"]["type"] . "</td></tr>";
echo 
"<tr><td>File Size: </td>
   <td>" 
. ($_FILES["fileToUpload"]["size"] / 1024) . " Kb</td></tr>";
echo 
"<tr><td>Name of Temporary File: </td>
   <td>" 
$_FILES["fileToUpload"]["tmp_name"] . "</td></tr>";
echo 
"</table>";
move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],
  
"/home/a9890303/public_html/uploads/" $_FILES["fileToUpload"]["name"]);
?>



...estuve leyendo y al parece esto sol funciona con archivos de menos de 2MB
...ahora estoy buscando uno q soporte mas y si no es mucho pedir tambien un progressbar del upload, que tambien lo estoy buscando
...por lo que se lo del progressbar se hace con ajax o algo similar
...en todo caso cual es el mas simple para poder aprender ^^

saludos!

PD: fui yo!  :-X jijiji
Cita de: carolmuriel en 22 Octubre 2008, 15:58 PM
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje


quien fue quien fue grrrrr >:D

carolmuriel

tiene permiso de escritura la carpeta donde alojaras esos archivos?, ya descartaste q no fue tu code y ya lo probaste en otro servidor te corrio bien en apache?

hay papa el peo es pa subir el form?

Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje


quien fue quien fue grrrrr >:D

schumacher

#4
...si ese code funciona ya lo eh probado con un archivo de texto de menos de 10kb
...pero el problema es cuando quiero subir archivos mas grandes (alrededor de 2MB)
...me dice "Problema al cargar la pagina" (firefox)

La conexión ha sido reiniciada
La conexión al servidor fue reiniciada mientras la página se cargaba.
    *   El sitio podría estar no disponible temporalmente o
         demasiado ocupado. Vuelva a intentarlo en unos momentos.
    *   Si no puede cargar ninguna página, compruebe la conexión
         de red de su ordenador.
    *   Si su ordenador o red están protegidos por un cortafuegos
         o proxy, asegúrese de que Firefox tiene permiso para
         acceder a la web.


...por ahi lei que tenia que hacer algo con el "php.ini" pero donde lo pongo o como hago aun no entendi eso jeje, acaso tendria que tener mi propio servidor para poder configurarlo? <.<

#!drvy

#5
has copiado el de w3schools ?
un ejemplo seria asi:

Código (php) [Seleccionar]

?php

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))  // bytes de archivo maximo 20 kb si el pones un 0 mas seran 2 mb
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Error: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Stored in: " . $_FILES["file"]["tmp_name"];
    }
  }
else
  {
  echo "Invalid file";
  }

?>



Saludos

schumacher

...pues si, ya lo habia probado, incluso ahi falta una partecita que es para mover el archivo de la carpeta temporal >.<
...yo recien estoy empezando asi que seguire buscando^^

...y alguna ayuda no me caeria mal! ::)

saludos

#!drvy

#7
bueno como mañana no trabajo xD.......
Código (php) [Seleccionar]

<center>
<div>
<?php
// Bsm

$carpeta "subidas/"// no te olvides el / al final
$tamano "50000"// en "bytes" 50000 bytes = 5 megabytes

if (empty($_FILES)) {} else {
// tamaño maximo
  
if (($_FILES["file"]["size"] < $tamano)) 
     
// caso de algun error
    
{if ($_FILES["file"]["error"] > 0) {echo "ERROR n: " $_FILES["file"]["error"] . "<br />";}
      else{
      echo 
"Archivo: " $_FILES["file"]["name"] . "<br />";
      echo 
"Tipo: " $_FILES["file"]["type"] . "<br />";
           
           
//prevenir repeticion
        
$rand rand(100,999999);
    $_FILES["file"]["name"] = $rand.$_FILES["file"]["name"];
    
    // mover archivos
        
move_uploaded_file($_FILES["file"]["tmp_name"],
        
$carpeta $_FILES["file"]["name"]);
        echo 
"Guardado en: " $carpeta $_FILES["file"]["name"];}
        
  } else {echo "tamaño superado";}
}
//bsm
?>

</div>
<br>
<div>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="file" />
<input type="submit" value="Enviar" />
</form>
</div>
</center>


De todos modos te recomiendo algún filtro ya que podría ver problemas de seguridad.

Recuerda dar permisos :P


Saludos