Hola a todos,
Estoy elaborando un proyecto en el que necesito que los usuarios suban un archivo multimedia (video) a un directorio de mi hosting. Sin embargo, estoy teniendo problemas con subir archivos superiores a 50MB. He configurado mi php.ini indicando un tamaño máximo de 600MB en los post (upload_max_filesize = 600M, post_max_size = 600M) y he puesto un tiempo de espera de dos horas (max_input_time = 7200) sin embargo el error persiste.
Adjunto una copia mi código.
Formulario:
<form action="procesar.php" method="post" enctype="multipart/form-data" name="formulario">
<input name="nombre" value="" size="30"> <br /><br />
<input name="estilo" value="" size="30"> <br /><br />
<input name="web" value="" size="30"> <br /><br />
<input name="email" value="" size="30"> <br /><br />
<input name="ytube" value="" size="30"> <br /><br />
<input type="file" name="file" id="file" /><br /><br /><br />
<input name="titulo" value="" size="30"> <br /><br />
<textarea cols="27" rows="3" id="mensaje" name="mensaje" /></textarea><br /><br />
<input type="submit" name="submit" value="Subir video" />
</form>
Código PHP que procesa el formulario:
<?php
if ($_FILES["file"]["size"] < 512000000){
if ($_FILES["file"]["error"] > 0){
echo "Se ha producido un error: " . $_FILES["file"]["error"] . "<br />";
}else{
echo "Se ha subido correctamente el fichero:" . "<br />";
echo "Nombre: " . $_FILES["file"]["name"] . "<br />";
echo "Tipo: " . $_FILES["file"]["type"] . "<br />";
echo "Tamaño: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
if (file_exists("videos/" . $_FILES["file"]["name"])){
echo $_FILES["file"]["name"] . " ya existe. ";
}else{
move_uploaded_file($_FILES["file"]["tmp_name"],
"videos/" . $_FILES["file"]["name"]);
}
}
}else{
echo "Invalid file";
}
?>
Gracias por vuestro tiempo,
Un saludo
sabrás si el hosting que contratas tiene algún límite? no parece normal que no puedas subir ningún archivo mayor de 50mb con esas configuraciones
Via html es imposble, yo traté incluso de configurar el límite desde php y htaccess pero la configuración principal del servidor es el que manda.
Normalmente desde un hosting compartido es imposible a menos que hables con el administrador o mandes un ticket.
Si tienes un vps o dedicado puedes modificarlo desde las configuraciones del apache.
Yo solucioné este problema creando un uploader en .net que corta el archivo en trozos de 2mb y los sube con un token, luego cuando finaliza manda una petición get para unirlos y los une con fopen() fgets() etc sin pasar por file put contents con variables para evitar la sobrecarga de memoria ram.
Gracias por contestar.
Creo que también probaré con un upload en .net
Un saludo
Quizas el limite del servidor se aplica solo a HTTP, podrias implementar el script pero usar FTP en lugar de enviar el fichero por $_FILES.
Te diria que proves subir algun archivo de unos 60/70 mb 'a mano' directamente con algun cliente FTP como Filezilla, si no tenes problemas hace lo que te digo. Solo le das set_time_limit(0) al script y listo.
Saludos