Foros del Web » Programando para Internet » PHP »

Rpoblemas al leer un archivo subido anteriormente

Estas en el tema de Rpoblemas al leer un archivo subido anteriormente en el foro de PHP en Foros del Web. Buenas tardes compañeros, mi problema es el siguiente: Tengo una aplicación que permite que los usuarios suban archivos tipo .pdf al servidor. yo e echo ...
  #1 (permalink)  
Antiguo 21/05/2007, 15:09
 
Fecha de Ingreso: abril-2007
Mensajes: 8
Antigüedad: 17 años
Puntos: 0
Pregunta Rpoblemas al leer un archivo subido anteriormente

Buenas tardes compañeros, mi problema es el siguiente:

Tengo una aplicación que permite que los usuarios suban archivos tipo .pdf al servidor. yo e echo pruebas en todas las carpetas y me sube los archivos correctamente, luego soy capas de visualizarlos desde el navegador por medio de una rutina que conseguí y no hay problema. el problema es que a veces cuando los usuarios suben archivos y luego los quieren visualizar me da el siguiente error:

Warning: filesize() [function.filesize]: stat failed for ../fs/perforacion_orimatita/ficha_tecnica/BOLETÍN RESUMEN ORIMATITA(R) May2007.pdf in /home/gomezcv/RIPIOS/cinprotec/presentacion/verImg.php on line 66.

En la pagina luego de mostrar el error muestra el archivo cargado como si fuese un directorio. Al clickear sobre el "supuesto" directorio me aparecen otros 3 errores mas, se los muestro a continuación:

Warning: opendir(../fs/perforacion_orimatita/ficha_tecnica/BOLETÍN RESUMEN ORIMATITA(R) May2007.pdf) [function.opendir]: failed to open dir: Invalid argument in /home/gomezcv/RIPIOS/cinprotec/presentacion/verImg.php on line 48

Warning: readdir(): supplied argument is not a valid Directory resource in /home/gomezcv/RIPIOS/cinprotec/presentacion/verImg.php on line 50

Warning: closedir(): supplied argument is not a valid Directory resource in /home/gomezcv/RIPIOS/cinprotec/presentacion/verImg.php on line 53.

Al momento de cargar los archivos la aplicación no emite ningún tipo de error.

Algo estaño que e notado es que al revisar (desde el deamweaver) las carpetas donde supuesta mente se han subido los archivos correctamente no me aparece archivo alguno. pero en la aplicación me refleja que si hay algo en ese directorio.

otra cosa que deben saber es que la aplicación no sube los archivos al servidor donde se encuentra el php sino a otro servidor de almacenamiento de archivos por medio de directorio espejo con ruta hacia este. de verdad que no se como se hace esta conexión de eso se encarga el chico del servidor.

las validaciones que tiene al momento de la carga son:
-- el archivo debe ser tipo pdf.
-- el archivo no debe sobre escribir cualquier otro archivo que tenga el mismo nombre.

para mas información aquí les dejo los códigos de mi aplicación:

-------------------------------------------------------------------------------
codigo de carga de archivos:
-------------------------------------------------------------------------------
// subiendo el archivo //
if (isset($_FILES['userfile'])){

$filelst='';
$temp = getenv( "QUERY_STRING");
$dir_name = $_POST['hdDireccion'];

if($dir_name == "") $dir_name = ".";
$handle=opendir($dir_name);

while ($file = readdir($handle)) { // Extract dir content
$filelst = "$filelst,$file";// save into string
}
closedir($handle);//
$filelist = explode(",",$filelst); // Brake string up into array
sort($filelist);
// sort the array acendingly, I suggest you make your own sort because this one sux
$nombre_archivo = $_FILES['userfile']['name'];
$archivoExiste = 0;
for ($count=1;$count<count($filelist);$count++) {
$filename=$filelist[$count];
if ($filename==$nombre_archivo){$archivoExiste = 1;}

}


$extension_archivo = explode(".",$_FILES['userfile']['name']); //$_FILES['userfile']['name'];
$num = count($extension_archivo)-1;
$tipo_archivo = $_FILES['userfile']['type'];
$tamano_archivo = $_FILES['userfile']['size'];

if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
if ($archivoExiste!=1){
if ($tipo_archivo=='application/pdf'){
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $_POST['hdDireccion'].$_FILES['userfile']['name'])){

echo "<table style='width:100%;text-align:left'><tr><td >Nombre: </td><td style='font-weight:normal'>".$nombre_archivo."</td></tr>";
echo "<tr><td>Extencion: </td><td style='font-weight:normal'>".$extension_archivo[$num]."</td></tr>";
echo "<tr><td>Tipo: </td><td style='font-weight:normal'>".$tipo_archivo."</td></tr>";
echo "<tr><td>Tamaño: </td><td style='font-weight:normal'>".$tamano_archivo."</td></tr>";
echo "<tr><td>Direcci&oacute;n: </td><td style='font-weight:normal'>".$_POST['hdDireccion']."</td></tr>";
echo "<tr><td>Direccion Temporal: </td><td style='font-weight:normal'>".$_FILES['userfile']['tmp_name']."</td></tr></table>";// copy($_FILES['userfile']['tmp_name'], "/archivos");

echo "<h6 style='color:#339933;font-size:14px; margin-top:40px;'>El archivo ha sido cargado correctamente</h6>";
}
else{
echo "<h6 style='color:red;font-size:14px; margin-top:20px;'>Ocurrió algún error al subir el documento. No pudo guardarse</h6>";
}
}
else{
echo "<h6 style='color:red;font-size:14px; margin-top:70px;'>Error: Unicamente se pueden guardar documentos tipo PDF.<br>(Ejemplo: nombreDocumento.pdf).</h6>";
}
}
else{
echo "<h6 style='color:red;font-size:14px; margin-top:70px;'>Error: Existe un archivo con el mismo nombre.<br> Cambie el nombre del archivo o ingrese un archivo distinto.</h6>";
}
}
}
-------------------------------------------------------------------------------
codigo de visualización de los archivos cargados:
-------------------------------------------------------------------------------

<?php
$filelst='';
$temp = getenv( "QUERY_STRING");

$dir_name = $_POST['hdDireccion'];

if($dir_name == "") $dir_name = ".";
$handle=opendir($dir_name);

while ($file = readdir($handle)) { // Extract dir content
$filelst = "$filelst,$file";// save into string
}
closedir($handle);//
$filelist = explode(",",$filelst); // Brake string up into array
sort($filelist);
// sort the array acendingly, I suggest you make your own sort because this one sux

for ($count=1;$count<count($filelist);$count++) {
print "<TR>";
$filename=$filelist[$count];

//echo "$filename";

$file_path = "$dir_name/$filename";

$filesize = filesize($file_path);
// You can use another function to format this, but you get the idea.
if (is_file($file_path)) {
// fleBLK.gif is a small icon of a file (draw yourself one and use that or use anything you want)
echo "<TD><img src='../imagenes/icono_doc.JPG'></TD>"; //// target='_blank' onClick=\"//nuevaVentana('$dir_name/$filename')
echo "<TD style='text-align:left;padding-left:10px;'><A href=\"javascript:nuevaVentana('$dir_name/$filename')\"> $filename </A></TD>";
echo "<TD>$filesize bytes</TD>";
// I suggest you change "File" to a function returning a better description or remove it completely (make sure you take them all out though)
echo "<TD>Archivo</TD>";
}
elseif(($filename != ".") && ($filename != "..")) {
// DirBLK.gif is a small icon of a folder (draw yourself one and use that or use anything you want)
echo "<TD><img src='../imagenes/icono_dir.JPG'></TD>";
echo "<TD style='text-align:left;padding-left:10px;'><A HREF=\"javascript:Enviar('$dir_name/$filename')\" > $filename </A></TD>";
echo "<TD> $filesize bytes </TD>";
// I suggest you change "Directory" to a function returning a better description or remove it completely (make sure you take them all out though)
echo "<TD>Directorio</TD>";
}
print "</TR>";
}
?>

------------------------------------------------------------------------------

Muchisimas gracias de antemano. Yo se que esta un poco extenso el post pero queria brindarle la mayor información posible para que me entendieran. cualquier cosa que no entiendan por favor preguntenme.

Saludos.

Eduardo Liendo.
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 02:26.