Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Guardar archivo en un directorio especifico del servidor

Estas en el tema de Guardar archivo en un directorio especifico del servidor en el foro de PHP en Foros del Web. Hola que tal, estoy descargando imágenes de la base de datos en sql server 2008 pero necesito que se descarguen automáticamente en una carpeta del ...
  #1 (permalink)  
Antiguo 10/11/2014, 09:54
 
Fecha de Ingreso: noviembre-2013
Ubicación: México
Mensajes: 94
Antigüedad: 10 años, 5 meses
Puntos: 1
Guardar archivo en un directorio especifico del servidor

Hola que tal, estoy descargando imágenes de la base de datos en sql server 2008 pero necesito que se descarguen automáticamente en una carpeta del servidor que se llame temp; tengo el siguiente código, si alguien me puede ayudar por favor..:

Consulta:
Código PHP:
 $sql_anexos="SELECT * from ANEXOS_ECI where id_eci=4390";
    
$res_anexos=sqlsrv_query($con,$sql_anexos); 
Código donde verifico si hay una imagen y la guardo en el directorio temp del servidor:

Código PHP:
 while($f_anexos=sqlsrv_fetch_array($res_anexos))
    {   
    if (
$f_anexos['tipo'] == "IMAGEN")
    {
        
$anexo$f_anexos['anexo'];
        echo 
$anexo;  
        
$extension "jpg";
        
$tipo "jpg";
        
$nombre="imagen";
        
        
header("Content-type: image/jpg");
        
header("Content-Transfer-Encoding: Binary");
        
header('Content-disposition: attachment; filename="'.$nombre.'.'.$extension.'"');
        
$ruta '/siec_mail/temp/';
        
fopen($ruta.$nombre);
    } 
muchas gracias por su valioso tiempo!!
  #2 (permalink)  
Antiguo 10/11/2014, 09:57
 
Fecha de Ingreso: noviembre-2013
Ubicación: México
Mensajes: 94
Antigüedad: 10 años, 5 meses
Puntos: 1
Guardar archivos en una carpeta especifica del servidor

Hola que tal, estoy descargando imágenes de la base de datos en sql server 2008 pero necesito que se descarguen automáticamente en una carpeta del servidor que se llame temp; tengo el siguiente código, si alguien me puede ayudar por favor..:

Consulta:
Código PHP:
 $sql_anexos="SELECT * from ANEXOS_ECI where id_eci=4390";
    
$res_anexos=sqlsrv_query($con,$sql_anexos); 
Código donde verifico si hay una imagen y la guardo en el directorio temp del servidor:
Código PHP:
 while($f_anexos=sqlsrv_fetch_array($res_anexos))
    {   
    if (
$f_anexos['tipo'] == "IMAGEN")
    {
        
$anexo$f_anexos['anexo'];
        echo 
$anexo;  
        
$extension "jpg";
        
$tipo "jpg";
        
$nombre="imagen";
        
        
header("Content-type: image/jpg");
        
header("Content-Transfer-Encoding: Binary");
        
header('Content-disposition: attachment; filename="'.$nombre.'.'.$extension.'"');
        
$ruta '/siec_mail/temp/';
        
fopen($ruta.$nombre);
    } 
muchas gracias por su valioso tiempo!!
  #3 (permalink)  
Antiguo 10/11/2014, 10:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Guardar archivos en una carpeta especifica del servidor

Por favor, evita duplicar temas: http://www.forosdelweb.com/f18/guard...vidor-1113330/

Duplicar temas va contra las reglas del foro, por favor respeta las normas.

Ahora, volviendo al tema ¿la información binaria de los archivos la tienes en base de datos?

Si eso es afirmativo entonces estás haciendo las cosas al revés, los header() que estás enviando son únicamente para forzar la descarga de dicho contenido a través del navegador.

Entonces tu no necesitas descargar archivos porque estás en el servidor, lo que necesitas es escribir dicha información binaria en archivos:
Código PHP:
Ver original
  1. file_put_contents("/temp/nombre_archivo", $contenido_archivo);

Observa lo que haces:
Código PHP:
Ver original
  1. $anexo= $f_anexos['anexo'];
  2.         echo $anexo;   // ¿este es el contenido?
  3.  
  4. // MAL (ninguna de las siguientes lineas hace lo que dices " la guardo en el directorio temp del servidor ") es una falacia
  5.         $extension = "jpg";
  6.         $tipo = "jpg";
  7.         $nombre="imagen";
  8.          
  9. // estos header() NO GUARDAN NADA EN EL SERVIDOR
  10.         header("Content-type: image/jpg");
  11.         header("Content-Transfer-Encoding: Binary");
  12.         header('Content-disposition: attachment; filename="'.$nombre.'.'.$extension.'"');
  13.         $ruta = '/siec_mail/temp/';
  14.  
  15. // ESTA LINEA NO HACE NADA, SOLO ABRE UN RECURSO (LEE EL MANUAL)
  16.         fopen($ruta.$nombre);

¿Se entiende todo lo que haces mal?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 10/11/2014, 10:44
 
Fecha de Ingreso: noviembre-2013
Ubicación: México
Mensajes: 94
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: Guardar archivos en una carpeta especifica del servidor

pateketrueke tienes mucha razón en que no estoy respetando las normas, pido una gran disculpa!! última vez que pasa...

Siempre ayudando pateketrueke muchas gracias de verdad por tu valioso tiempo ya me quedo, dejo el código:

Código PHP:
Ver original
  1. while($f_anexos=sqlsrv_fetch_array($res_anexos))
  2.     {  
  3.     if ($f_anexos['tipo'] == "IMAGEN")
  4.     {
  5.         $nombre=0;
  6.         $anexo= $f_anexos['anexo'];
  7.         //echo $anexo;  
  8.         $extension = "jpg";
  9.         $tipo = "jpg";
  10.         $nombre="imagen";
  11.         $nombre++;
  12.        
  13.         file_put_contents("../siec_mail/temp/$nombre.$tipo", $anexo);
  14.     }

gracias!!
  #5 (permalink)  
Antiguo 11/11/2014, 02:38
 
Fecha de Ingreso: septiembre-2014
Mensajes: 180
Antigüedad: 9 años, 7 meses
Puntos: 14
Respuesta: Guardar archivo en un directorio especifico del servidor

¿Estás sobre Windows o Linux? Ten en cuenta que la ruta que estás poniendo ("/siec_mail/temp/") debe existir en bajo "/". Si es relativa sería sin la barra inicial: "siec_mail/temp/".

Luego, ¿te arroja algún error al ejecutar el código que nos pueda dar alguna pista más?
__________________
Unelink.es - VPS, servidores dedicados, hosting y dominios. 10 años a tu lado.
  #6 (permalink)  
Antiguo 11/11/2014, 07:15
Avatar de andres_15_  
Fecha de Ingreso: septiembre-2008
Ubicación: Cali
Mensajes: 232
Antigüedad: 15 años, 7 meses
Puntos: 7
Respuesta: Guardar archivo en un directorio especifico del servidor

este es un trozo de un codigo que utilizo para guardar en un sistema linux:

Código PHP:
Ver original
  1. $fp = fopen($_SESSION['CONFIG_SITE']['PATH_APLICATION'] . "/tmp/" . $nombreArc . '.html', "w");
  2.             /* escribimos en el archivo */
  3.             fwrite($fp, $strHtml);
  4.             fclose($fp);

Pero lo que dijo json es cierto, dependiendo del SO del servidor, asi mismo se utiliza para guardar.
  #7 (permalink)  
Antiguo 11/11/2014, 10:44
 
Fecha de Ingreso: noviembre-2013
Ubicación: México
Mensajes: 94
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: Guardar archivo en un directorio especifico del servidor

Estoy utilizando Windows, pero ya quedo amigos muchas gracias les comparto el código;

Código PHP:
Ver original
  1. $agregar=1;
  2.       while($f_anexos=sqlsrv_fetch_array($res_anexos))
  3.     {  
  4.         if ($f_anexos['tipo'] == "IMAGEN")
  5.         {
  6.         $anexo= $f_anexos['anexo'];
  7.                 $extension=$f_anexos['extension'];
  8.                   $nombre="IMAGEN".$agregar;
  9.                   //Guarda archivos en una carpeta del servidor
  10.                   file_put_contents("../siec_mail/temp/$nombre.$extension", $anexo);
  11.                   $mail->AddAttachment("../siec_mail/temp/$nombre.$extension", "$nombre.$extension");
  12.             }
  13.             elseif ($f_anexos['tipo']=="DOCUMENTO")
  14.             {
  15.                   $anexo= $f_anexos['anexo'];
  16.                   $extension=$f_anexos['extension'];
  17.                   $nombre="DOCUMENTO".$agregar;
  18.                   //Guarda archivos en una carpeta del servidor
  19.                   file_put_contents("../siec_mail/temp/$nombre.$extension", $anexo);
  20.                   $mail->AddAttachment("../siec_mail/temp/$nombre.$extension", "$nombre.$extension");
  21.             }
  22.             $agregar++;
  23.            
  24.          }

El código quedo de esta manera, lo que hace es lo siguiente, primero va a la tabla y checa si tiene datos binarios (Archivos) si tiene lo descarga en una carpeta temporal del servidor y los adjunta al correo.. Si creen conveniente hacerle modificación al código con mucho gusto recibo sugerencias.. Muchas gracias!

Etiquetas: carpeta, directorio, especifica, especifico, select, servidor, sql
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 07:50.