Foros del Web » Programando para Internet » PHP »

Ayuda descarga archivos

Estas en el tema de Ayuda descarga archivos en el foro de PHP en Foros del Web. Hola a tod@s: Resulta que he seguido el tutorial que se postea en el foro acerca de cómo subir archivos al servidor y una vez ...
  #1 (permalink)  
Antiguo 25/07/2004, 10:51
 
Fecha de Ingreso: octubre-2003
Mensajes: 146
Antigüedad: 20 años, 6 meses
Puntos: 1
Ayuda descarga archivos

Hola a tod@s:


Resulta que he seguido el tutorial que se postea en el foro acerca de cómo subir archivos al servidor y una vez testeado me funciona correctamente.Lo que pretendo es que cuando un usuario registrado entre en mi web pueda introducir los datos de un proyecto de investigación y subir el archivo de dicho proyecto al servidor.Dispongo de una tabla MySQL llamada proyectos que almacena todos los datos(titulo,autor,...) del proyecto que son introducidos a través de un formulario y en dicho formulario existe una opción de subir el proyecto(en pdf por ejemplo) al servidor para su posterior descarga.
Ahora bien,me gustaría que una vez subido el archivo a una carpeta del servidor(concretamente http://localhost/upload/archivos/"nombre_del archivo"),que como repito lo realiza correctamente,que pudiera almacenar la dirección en la tabla MySQL de proyectos donde se encuentra el archivo para poder descargarlo(ya que he pensado que ésta sería una buena opción para descargar los archivos que se suben,aunque si hay otra manera mejor agradecería mucho que me lo dijeran,siempre que esté relacionado a la forma de subir los archivos)una vez que listemos los proyectos almacenados por pantalla,es decir,que una vez que liste los proyectos cada uno tenga una opción de descargar archivo.
Lo que no sé es cómo enlazar el archivo que subo a la carpeta del servidor con una posible descarga de dicho archivo(cada proyecto es identificado por un campo id auto_increment) así que sólo me haría falta saber cómo puedo almacenar en la tabla proyectos algo que me permita poder acceder a dicho archivo una vez subido.

Espero haberme explicado más o menos bien.Espero que alguien pueda ayudarme en esto.Muchas gracias anticipadas.Un saludo compañeros
__________________
·۰•●Pi®®ili●•۰· Lo esencial es invisible a los ojos
  #2 (permalink)  
Antiguo 25/07/2004, 12:40
 
Fecha de Ingreso: julio-2004
Ubicación: Puerto Vallarta, Jalisco, Mexico
Mensajes: 186
Antigüedad: 19 años, 9 meses
Puntos: 0
a ver si te entendi bien

lo que tu quieres hacer es que el nombre con todo y ruta del archivo se introduscan en la base de datos? para posteriormente leer esas rutas dinamicamente? si es asi este codigo te puede ayudar a introducir los datos de los archivos que subas.

Código PHP:
$uploadDir '/var/www/uploads/';
$uploadFile $uploadDir $_FILES['userfile']['name'];

if (
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadFile))
{
   
 
$SQL ="INSERT INTO tabla (archivos) VALUES (".$uploadFile.")";

// si el campo donde va este archivo ya existe cuando llegas a este punto, cambiar el INSERT por un UPDATE.

$conex mysql_connect("localhost","usuario","password") or die ("no se pudo conectar???");
  
mysql_select_db("basededatos"$conex);

$resultado mysql_query($SQL,$conex);

if (
$resultado)
echo 
"Exito, el archivo ha sido dado de alta en la base de datos";
}
else
{
echo 
"Hubo un error al subir el archivo, informacion extra:\n";
    
print_r($_FILES);

nota que no probe el codigo, solo lo adapte a tus necesidades.

como puedes ver puedes sacar el nombre junto con la ruta del archivo con este codigo
$uploadDir = '/var/www/uploads/';
$uploadFile = $uploadDir . $_FILES['userfile']['name'];

el resultado seria una entrada en la base de datos como:

"/var/www/uploads/nombrearchivo.ext"

espero esto te ayude.
__________________
Shanti Castillo G.
  #3 (permalink)  
Antiguo 26/07/2004, 05:28
 
Fecha de Ingreso: octubre-2003
Mensajes: 146
Antigüedad: 20 años, 6 meses
Puntos: 1
Muchas gracias Shantic,tu script me ha servido de gran ayuda,lo he probado y me inserta en la base de datos la ruta donde se encuentra el archivo en el servidor correctamente.Ahora bien,se me plantean las siguientes dudas:

1)Conocida la ruta ya se supone que puedo descargar dichos archivos¿es así?
Si no es mucho pedir,¿cómo quedaría el script para descargar los archivos?Tengo pensado que a la hora de mostrar los proyectos por pantalla quiero que cada uno tenga un enlace para poder descargarselos pero ¿¿¿haría falta algún script o método especial o bastaría con poner un enlace con la ruta donde se encuentran y pinchar sobre él y automáticamente poder descargárselos???

2)La otra dudilla(más que duda es una confirmación) que tengo es: en la web se podrán subir proyectos que estén en desarrollo y cuando quiera subir el mismo archivo pero ya terminado,¿se sobreescribe el anterior o no te dejaría subirlo o cómo trabaja en este caso el servidor?Lo he probado en modo local y lo sobreescribe pero una vez que suba la web a un servidor ¿seguirá funcionando de la misma manera verdad?

Espero no causarles muchas molestias pero a ver si consigo de una vez poder hacer la subida y descarga correctamente,como no con vuestro apoyo.Muchas gracias.Hasta pronto
__________________
·۰•●Pi®®ili●•۰· Lo esencial es invisible a los ojos
  #4 (permalink)  
Antiguo 26/07/2004, 13:25
 
Fecha de Ingreso: octubre-2003
Mensajes: 146
Antigüedad: 20 años, 6 meses
Puntos: 1
¿Nadie sabe responderme?
__________________
·۰•●Pi®®ili●•۰· Lo esencial es invisible a los ojos
  #5 (permalink)  
Antiguo 26/07/2004, 13:45
Avatar de xavivars  
Fecha de Ingreso: enero-2002
Ubicación: Benissa - la Marina Alta
Mensajes: 212
Antigüedad: 22 años, 3 meses
Puntos: 1
Eso dependera del sistema que utilices para guardar el archivo: si miras si existe antes de guardarlo o no.

Supongo que no estaras haciendo ningun control de eso, y se sobreescribira siempre.

Lo que debes tener en cuenta es la posibilidad de que existant distintos proyectos desde los que se suba un archivo con el mismo nombre: al sobreescribirse el archivo perderias el anterior
  #6 (permalink)  
Antiguo 26/07/2004, 14:02
 
Fecha de Ingreso: octubre-2003
Mensajes: 146
Antigüedad: 20 años, 6 meses
Puntos: 1
Tienes razon xavivars,¿cómo se controla cuando alguien quiera subir un archivo que ya exista en la carpeta de subidos?La probabilidad de que ocurra esto no es muy elevada pero puede ocurrir perfectamente.si coinciden dos archivos con el mismo nombre,¿cómo podría almacenarlos sin que se sobreescribieran?

Y otra cosa,¿me podrías decir cómo se pueden descargar los proyectos una vez almacenada la ruta en la tabla MySQL donde se encuentran en el servidor?

Es que subirlos los subo bien y almaceno bien la ruta pero toavia no sé como descargarlos,venga muchas gracias xavi y hasta pronto.Un saludo
__________________
·۰•●Pi®®ili●•۰· Lo esencial es invisible a los ojos
  #7 (permalink)  
Antiguo 26/07/2004, 14:15
Avatar de xavivars  
Fecha de Ingreso: enero-2002
Ubicación: Benissa - la Marina Alta
Mensajes: 212
Antigüedad: 22 años, 3 meses
Puntos: 1
para descargarlos no hay mas que hacer un enlace <a href="ruta_en_tu_base_de_datos">Descarga</a>.

Para evitar la repeticion del nombre, puedes renombrar el archivo usando, por ejemplo, el mismo identificador que usas en la bd del proyecto
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 21:07.