hola
estoy haciendo una aplicacion a la cual le agregue unos archivos de upload( cargar achivos ) el cual tambien lista los archivos cargados y los forza a descargar...
lista.php
<?php
include("arriba.php");
$status = "";
if ($_POST["action"] == "upload") {
// obtenemos los datos del archivo
$tamano = $_FILES["archivo"]['size'];
$tipo = $_FILES["archivo"]['type'];
$archivo = $_FILES["archivo"]['name'];
$prefijo = substr(md5(uniqid(rand())),0,6);
if ($archivo != "") {
// guardamos el archivo a la carpeta files
$destino = "archivos/".$prefijo."_".$archivo;
if (copy($_FILES['archivo']['tmp_name'],$destino)) {
$status = "Archivo subido satisfactoriamente: <b>".$archivo."</b>";
} else {
$status = "Error al subir el archivo";
}
} else {
$status = "Error al subir archivo";
}
}
?>
<?php
echo "".$status;
?>
<br>
<table height="30" class="texto_titulo" align="center">
<tr>
<td >Listado de Archivos Subidos </td>
</tr>
</table>
<?php
echo "<table class='texto_tabla' align='center'> ";
if ($gestor = opendir('archivos')) {
while (false !== ($arch = readdir($gestor))) {
if ($arch != "." && $arch != "..") {
echo "<tr><td><a href='bajar.php?nom=".$arch."'>".$arch."</a></td>";
echo "<td> </td>";
echo"<td><a href='eliminar_archivo.php?nom=".$arch."'>eliminar</a></td> \n ";
}
}
closedir($gestor);
}
echo "<br> \n";
echo "</tr> </table><br>";
echo"<a href='upload.php>Regresar a Upload</a>";
?>
<?php
include("abajo.php");
?>
bajar.php
<?php
$ruta = 'archivos/';//definimos la ruta para las descargas
$error = 'Archivo no disponible para descarga.';
if(isset($_GET['nom']) && basename($_GET['nom']) == $_GET['nom']) {
$getfile=$_GET['nom'];
} else { $getfile = NULL; }
if(!$getfile){ echo $error;
} else {
$filepath = $ruta.'/'.$getfile;
if(file_exists($filepath) && is_readable($filepath)){
$size = filesize($filepath);
header('Content-Type: application/octet-stream');
header('Content-Length: '.$size);
header('Content-Disposition: attachment; filename='.$getfile);
//header('Content-Transfer-Encoding: binary');
$file = @ fopen($filepath,'rb');
if($file) {
fpassthru($file);
exit;
} else { echo $error; }
} else {echo $error;
} }
?>
en lista php listo los archivos cargados pero el problema es que si cargo un archivo con caractes ("·$%$%, etc....) incluyendo la ñ, a la hora de dar click para descargarlos no los descarga..
mi pregunta es:
alguien me podria decir como valido los caracteres para que no tenga problema a la hora de descargarlos....
les agredeceria si me ayudacen.
gracias
estoy haciendo una aplicacion a la cual le agregue unos archivos de upload( cargar achivos ) el cual tambien lista los archivos cargados y los forza a descargar...
lista.php
<?php
include("arriba.php");
$status = "";
if ($_POST["action"] == "upload") {
// obtenemos los datos del archivo
$tamano = $_FILES["archivo"]['size'];
$tipo = $_FILES["archivo"]['type'];
$archivo = $_FILES["archivo"]['name'];
$prefijo = substr(md5(uniqid(rand())),0,6);
if ($archivo != "") {
// guardamos el archivo a la carpeta files
$destino = "archivos/".$prefijo."_".$archivo;
if (copy($_FILES['archivo']['tmp_name'],$destino)) {
$status = "Archivo subido satisfactoriamente: <b>".$archivo."</b>";
} else {
$status = "Error al subir el archivo";
}
} else {
$status = "Error al subir archivo";
}
}
?>
<?php
echo "".$status;
?>
<br>
<table height="30" class="texto_titulo" align="center">
<tr>
<td >Listado de Archivos Subidos </td>
</tr>
</table>
<?php
echo "<table class='texto_tabla' align='center'> ";
if ($gestor = opendir('archivos')) {
while (false !== ($arch = readdir($gestor))) {
if ($arch != "." && $arch != "..") {
echo "<tr><td><a href='bajar.php?nom=".$arch."'>".$arch."</a></td>";
echo "<td> </td>";
echo"<td><a href='eliminar_archivo.php?nom=".$arch."'>eliminar</a></td> \n ";
}
}
closedir($gestor);
}
echo "<br> \n";
echo "</tr> </table><br>";
echo"<a href='upload.php>Regresar a Upload</a>";
?>
<?php
include("abajo.php");
?>
bajar.php
<?php
$ruta = 'archivos/';//definimos la ruta para las descargas
$error = 'Archivo no disponible para descarga.';
if(isset($_GET['nom']) && basename($_GET['nom']) == $_GET['nom']) {
$getfile=$_GET['nom'];
} else { $getfile = NULL; }
if(!$getfile){ echo $error;
} else {
$filepath = $ruta.'/'.$getfile;
if(file_exists($filepath) && is_readable($filepath)){
$size = filesize($filepath);
header('Content-Type: application/octet-stream');
header('Content-Length: '.$size);
header('Content-Disposition: attachment; filename='.$getfile);
//header('Content-Transfer-Encoding: binary');
$file = @ fopen($filepath,'rb');
if($file) {
fpassthru($file);
exit;
} else { echo $error; }
} else {echo $error;
} }
?>
en lista php listo los archivos cargados pero el problema es que si cargo un archivo con caractes ("·$%$%, etc....) incluyendo la ñ, a la hora de dar click para descargarlos no los descarga..
mi pregunta es:
alguien me podria decir como valido los caracteres para que no tenga problema a la hora de descargarlos....
les agredeceria si me ayudacen.
gracias