Espero puedan ayudarme, estoy iniciando en esto de programar en php y sinceramente no se que mas puedo hacer...
Resulta que tengo que subir un archivo a mi bd y guardar la ruta para poder descargarlo, lo estoy haciendo de manera local, uso xampp.. mi bd tiene los siguientes campos:
-id
-name
-description
-ruta
-tipo
-size
El código que utilizo para guardar los archivos es el siguiente:
Código PHP:
<?php
if (isset($_POST['submit'])) {
if(is_uploaded_file($_FILES['fichero']['tmp_name'])) {
$ruta_destino = "C:/xampp/htdocs/documentos/";
$namefinal= trim ($_FILES['fichero']['name']);
$namefinal= ereg_replace (" ", "", $namefinal);
$uploadfile= $ruta_destino . $namefinal;
if(move_uploaded_file($_FILES['fichero']['tmp_name'], $uploadfile)) { // se coloca en su lugar final
echo "<b>Upload exitoso!. Datos:</b><br>";
echo "Nombre: <i><a href=\"".$ruta_destino . $_FILES['fichero']['name']."\">".$_FILES['fichero']['name']."</a></i><br>";
echo "Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>";
echo "Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>";
echo "<br><hr><br>";
//conectamos a la base de datos
mysql_connect('localhost','root')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('directorio')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
$nombre_archivo = $_POST["nombre_archivo"];
$description = $_POST["description"];
$query = "INSERT INTO archivos
VALUES (0,'$nombre_archivo','$description' , '".$_FILES['fichero']['name']."','".$_FILES['fichero']['type']."', '".$_FILES['fichero'] ['size']."')";
mysql_query($query) or die(mysql_error());
echo "El archivo '".$nombre_archivo."' ha sido registrado de manera satisfactoria.<br />";
}
}
}
// A continuación el formulario
?>
Código HTML:
<body> <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data"> Archivo: <input name="fichero" type="file" size="150" maxlength="150"> <br> Nombre: <input name="nombre_archivo" type="text" size="70" maxlength="70"> <br> Descripcion: <input name="description" type="text" size="100" maxlength="250"> <br> <input name="submit" type="submit" value="Upload!"> </form>
Código PHP:
<?php
//listar_archivos.php
$conexion = mysql_connect('localhost','root')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('directorio')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
$_pagi_sql = "SELECT id, name, description, ruta, tipo, size FROM archivos";
$_pagi_result = mysql_query($_pagi_sql , $conexion) or die ( mysql_error() );
while($row = mysql_fetch_array($_pagi_result)){
echo "<table width=70%><tr bgcolor= #61e877><div align=center>";
echo "<b>Titulo: </b>";
echo $row['name'];
echo "</div></tr>";
echo"<tr> </tr>";
echo "<tr bgcolor= #cccccc><b> Descripcion: </b><br>";
echo $row['description'];
echo "</tr>";
echo"<tr bgcolor= #cccccc > </tr>";
echo "<tr bgcolor= #cccccc><b> Tamaño: </b>";
echo $row['size']." Bytes";
echo "</tr>";
echo"<tr bgcolor= #cccccc> </tr>";
echo "<tr bgcolor= #cccccc><div align=center><a href=\"descargar.php?ruta=archivos/$row[ruta]\">Descargar</a></div>";
echo "</tr>";
echo"<tr bgcolor= #cccccc> </tr>";
echo "</table>" ;
}
?>
¡Objeto no encontrado!
El enlace requerido no ha sido localizado en este servidor. El enlace en la página referente parece tener algun error o ha expirado. Por favor comunique al autor de la página el error.
Por favor contacte con el webmaster en caso de que usted crea que existe un error en el servidor.
Error 404
localhost
11/20/12 12:58:11
Apache/2.2.4 (Win32) DAV/2 mod_ssl/2.2.4 OpenSSL/0.9.8e mod_autoindex_color PHP/5.2.2
el código para descargar es este:
Código PHP:
<?php
header("Content-Disposition: attachment; filename=ruta_al_archivo");
$ruta = $_GET['ruta'];
$archivo_arr = explode( "/", $ruta );
$archivo = $archivo_arr[count($archivo_arr) - 1];
if( !file_exists( $ruta ) ) {
die( "No existe $ruta" );
}
header( "Content-Disposition: attachment; filename=".$archivo."");
header( "Content-type: application/octet-stream" );
header("Content-Length: ".filesize($ruta)); //header que envia al navegador el tamaño del archivo.
@readfile( $ruta );
?>