2009-08-27 26 views
5

Estoy trabajando en una aplicación que permite la carga y el almacenamiento de archivos de gran tamaño en un servidor web. Actualmente estoy usando PHP para manejar archivos POSTed a través de http. Tengo mi juego de php.ini con:Subidas de archivos grandes

upload_max_filesize = 100M 
post_max_size = 100M 
memory_limit = 128M 
max_input_time = 6000 
max_execution_time = 6000 

No parece haber ninguna directiva de Apache para establecer LimitRequestBody. Uso APC para rastrear el progreso de carga de archivos. Por alguna razón, la carga del archivo siempre se detiene exactamente a 50M.

Sé que http no es la solución más eficiente para cargar archivos, pero esta aplicación debe ser fácil de usar, y entiendo que hay problemas de firewall con ftp.

Me pregunto si alguien podría darme algunas sugerencias sobre lo que está deteniendo mi descarga a exactamente 50M? Debe ser algún tipo de configuración.

Además, ¿hay alguna otra manera en que deba considerar el uso de javascript/PHP y http para subir archivos? He investigado los applets de Java y el uso de flash. Posiblemente va a usar swfuploader, pero si es una configuración de servidor que está causando que mi carga falle a través de http, realmente no veo cómo un applet de java o un cargador de flash podrían evitarlo.

Debo señalar que estoy esperando encontrar una solución que me permita cargar archivos muy grandes de hasta 1 GB en algún momento.

puedo usar PHP muy simplista para recibir el archivo

$uploaddir = '/'.$_POST['upload_directory'].'/'; 
$uploadfile = $uploaddir . basename($_FILES['file']['name']); 

if (is_uploaded_file($_FILES['file']['tmp_name'])) { 
    if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) { some success code; } 

Obviamente hay un poco más que eso, pero esa es la esencia de cómo manejar la carga.

+0

¿Cómo está cargando los archivos y qué hace con ellos después de subirlos? –

+0

comandos php is_uploaded_file() y move_uploaded_file() simples y sacando los archivos de $ _FILES – wallacer

Respuesta

4

Después de varias horas de golpearse la cabeza He resuelto el problema. Estoy usando Extjs para componentes frontales. El widget de carga que estoy usando tenía una configuración codificada que establece la propiedad MAX_ CARGAR _FILESIZE de la solicitud POST en 50M, sobreescribiendo el valor en el que lo configuré en otro lugar. Ahora está funcionando como se esperaba. Gracias por los comentarios.

2

Establezca la directiva LimitRequestBody en su vhost.

http://www.cyberciti.biz/faq/apache-limiting-upload-size/

+0

este artículo trata sobre cómo establecer LimitRequestBody para limitar el tamaño de carga. Si no tengo el conjunto LimitRequestBody, ¿no es ya ilimitado? – wallacer

+1

http://httpd.apache.org/docs/2.2/mod/core.html#limitrequestbody dice "Si la solicitud del cliente excede ese límite, el servidor devolverá una respuesta de error en lugar de atender la solicitud". Si no obtiene una respuesta de error en el navegador, este no es el problema ... – VolkerK

+0

ya no obtengo un error, entonces sé que este no es el problema. No tengo suficiente 'reputación' para rechazar la respuesta, pero esta respuesta no ayuda para nada – wallacer

Cuestiones relacionadas