Foros del Web » Programando para Internet » PHP »

Problema al subir varios archivos

Estas en el tema de Problema al subir varios archivos en el foro de PHP en Foros del Web. Estoy tratando de armar un script para el upload de 10 archivos (Box 0 al Box 10) y obtengo el siguiente error para el Box ...
  #1 (permalink)  
Antiguo 10/07/2006, 08:57
 
Fecha de Ingreso: octubre-2003
Ubicación: capital
Mensajes: 17
Antigüedad: 20 años, 6 meses
Puntos: 0
Problema al subir varios archivos

Estoy tratando de armar un script para el upload de 10 archivos (Box 0 al Box 10) y obtengo el siguiente error para el Box 2 en adelante:

Warning: move_uploaded_file(c:/appserv/www/ATutor/content/) [function.move-uploaded-file]: failed to create stream: Permission denied in c:\appserv\www\atutor\tools\tests\create_question_ drag_drop_img.php on line 151

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'c:\temporal\php3354.TMP' to 'c:/appserv/www/ATutor/content/' in c:\appserv\www\atutor\tools\tests\create_question_ drag_drop_img.php on line 151

En el script pongo el siguiente codigo para el Box 2:
Código PHP:
        //Muevo el archivo de imagen al servidor
        
$nombre_archivo_2   $_FILES['choice_file']['name'][2]; //Nombre del archivo en maquina    usuario
        
$tipo_archivo_2     $_FILES['choice_file']['type'][2]; //Tipo de archivo a subir al servidor
        
$tamano_archivo_2   $_FILES['choice_file']['size'][2]; //Tamaño del archivo a subir
        
$directorio               $_SERVER["DOCUMENT_ROOT"];

//Controlo errores
        
if($nombre_archivo_2!=""){
        
//compruebo si las características del archivo son las que deseo
        
if ((!(strpos($tipo_archivo_2,"pjpeg") || strpos($tipo_archivo_2"gif")) && ($tamano_archivo_2 500000))){
        
$msg->addError('FILE_ERROR_BOX2');
        }
        else{
            if (
move_uploaded_file($_FILES['choice_file']['tmp_name'][2],$directorio."/ATutor/content/".$nombre_archivo)){
              
//  $msg->addError('FILE_UPLOADED_BOX2');
            
}
            else{
                
$msg->addError('UPDATE_ERROR_BOX2');
            }
        }
    }

// Fin mover archivos 
Este ejemplo es para el box 2 (Yo puse desde el Box 0 al Box 9) y todos son iguales solo cambio el $_FILES por ej para box 0 seria $_FILES['choice_file']['name'[0] y asi en cada uno.

Lo raro es que cuando lo ejecuto funciona para el box 0 y el box 1. A partir del box 2 da el error. Inclusive si comento el codigo del Box 0 y el Box 1 como para comenzar por el box 2 da error, si comento este y comienzo por el box 3 o 4 o 5, etc pasa lo mismo. Solo toma box 0 y 1.

El codigo para el Box 0 es el mismo para box 2 (cambiando algunas variables)
[php]
//Muevo el archivo de imagen al servidor
$nombre_archivo_0 = $_FILES['choice_file']['name'][0]; //Nombre del archivo en maquina usuario
$tipo_archivo_0 = $_FILES['choice_file']['type'][0]; //Tipo de archivo a subir al servidor
$tamano_archivo_0 = $_FILES['choice_file']['size'][0]; //Tamaño del archivo a subir
$directorio = $_SERVER["DOCUMENT_ROOT"];

//Controlo errores
//compruebo si las características del archivo son las que deseo
if ((!(strpos($tipo_archivo_0,"pjpeg") || strpos($tipo_archivo_0, "gif")) && ($tamano_archivo_0 < 500000)&&(isset($_POST['subio_0'])))){
$msg->addError('FILE_ERROR_BOX0');
}
else{
if (move_uploaded_file($_FILES['choice_file']['tmp_name'][0],$directorio."/ATutor/content/".$nombre_archivo_0)){

// $msg->addError('FILE_UPLOADED_BOX0');
$_POST['subio_0'] = "si";
}
else{
$msg->addError('UPDATE_ERROR_BOX0');
}
}

// Fin mover archivos
[php]

En el form utilizo los siguientes campos:
Código PHP:
<input type="file" name="choice_file[]" id="choice_file[]" lang="es" />
<
input type="file" name="choice_file[]" id="choice_file[]" lang="es" />
<
input type="file" name="choice_file[]" id="choice_file[]" lang="es" /> 
... y asi 10 veces

Lo que no puedo entender es porque funciona para los dos primeros y no para el resto. Ya probe cambiar el php.ini y httpf.conf segun lo que lei en el foro y en las faq pero nada

Desde ya muchas gracias

----------------------------------------------------------
SO: Windows 98
Servidor: Apache 2.0
Php: 5.3
----------------------------------------------------------

Última edición por Cluster; 10/07/2006 a las 09:07
  #2 (permalink)  
Antiguo 10/07/2006, 09:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Podría ser que tengas problemas de limites de tiempo de ejecución, podrías solventarlo desde php.ini o función:

set_time_limit()
www.php.net/set_time_limit

También podrías tener problemas con el total del tamaño de archivos que subes .. Observaciones al respecto y configuración que cambiar lo tiene en esta FAQ:

http://www.forosdelweb.com/showpost....&postcount=146

Lo importante es ver los mensajes de error si por alguna razón no se están visualizando, revisa (php.ini):

display_error = ON (debe estar a ON).


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 10/07/2006, 21:00
 
Fecha de Ingreso: octubre-2003
Ubicación: capital
Mensajes: 17
Antigüedad: 20 años, 6 meses
Puntos: 0
Ya revise el php.ini y verifique los tiempos, lo mismo que para el tamaño del archivo a subir y estan activados los warnings y errores. Lo raro de esto es que toma el primer move_uploaded_file y el segundo pero falla a partir del tercero o sea:

move_uploaded_file //Ok - Box0
move_uploaded_file //Ok - Box1
move_uploaded_file// Falla - Box2
move_uploaded_file// Falla - Box3 y asi

Aun si comento el codigo del box0 y box 1 y trato de subir archivos por cualquiera de los otros falla, o sea

//move_uploaded_file --Lo comento para box 0
//move_uploaded_file --Lo comento para box 1
move_uploaded_file --Trato de usarlo - Falla Box 2
move_uploaded_file -- Trato de usarlo - Falla Box 3

¿ Por que falla si esta comentado el codigo ? El codigo que utilizo para box 0 es el mismo para box 2 o 3 o cualquiera de los siguientes.

Desde ya muchas gracias
  #4 (permalink)  
Antiguo 28/07/2006, 18:49
 
Fecha de Ingreso: julio-2006
Ubicación: Buenos Aires-Cap. Fed.
Mensajes: 12
Antigüedad: 17 años, 8 meses
Puntos: 0
por si no lo resolviste , te envio una alternativa que uso para subir multiples archivos , espero que sirva de algo, salu2.


PD: LA CARPETA "ARCHIVOS" DONDE SE SUBIRAN LOS MISMOS DEBE ESTAR PREVIAMENTE CREADA EN EL SERVIDOR


<?php

$path=$_SERVER['DOCUMENT_ROOT'].'/archivos/';

/* Destination of Upload files..use / insted of \\\\\\\\ in UNIX */
define($path,'cena2005');

/* Signamos a UPLOAD_NO la cantidad de infiles que queremos hacer */
define(UPLOAD_NO, 10);

if($REQUEST_METHOD!=POST)
{
print '<form enctype=multipart/form-data method=POST>';
print '<INPUT TYPE=hidden name=MAX_FILE_SIZE value=100000>';

for($i=1; $i<=UPLOAD_NO; $i++)
{
echo '<input type=file name=infile';echo$i;echo'>';

if($i%2==0)
print'<br>';
}
echo '<br><br><input type=submit value=Subir></form>';
}
else
{
/* handle uploads */
$noinput = true;
for($i=1; $noinput && ($i<=UPLOAD_NO); $i++)
{
if(${infile.$i}!=none) $noinput=false;
}
if($noinput)
{
print '<big><B>Error uploading. Intente de Nuevo.</B></big>';
exit();
}
echo'<p align=center><b><font size=4>Subida Satisfactoria<br>';

echo'<table border=1 width=84% height=52 bordercolorlight=#008080 bordercolordark=#008080>
<tr>
<td width=14% bgcolor=#008000 height=21><font color=#FFFFFF><b>Sn</b></font></td>
<td width=52% bgcolor=#008000 height=21><font color=#FFFFFF><b>Filename</b></font></td>
<td width=34% bgcolor=#008000 height=21><font color=#FFFFFF><b>Size</b></font></td>
</tr>';

for($i=1; $i<=UPLOAD_NO; $i++)
{

$just=filesize(${infile.$i});
$fp_size[i] = $just;
// Este es el Peso del Archivo echo$just;

if(${infile.$i}!=none &&
copy(${infile.$i}, $path .'/'.${infile.$i._name})
// move_uploaded_file ( $_FILES [ '${infile.$i}' ][ '${infile.$i._name} '], DESTINATION . '/' . $_FILES [ '${infile.$i}' ][ '${infile.$i._name}' ])
&& unlink(${infile.$i}))
{

echo'<tr>

<td width=14% height=19>'; echo$i; echo'</td>
<td width=52% height=19>'; echo${infile.$i._name}; echo'</td>
<td width=34% height=19>'; echo$fp_size[i]; echo'</td>
</tr>
';
}
}
echo '</table>';
}
?>
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 01:14.