2012-01-29 26 views
7

Actualmente tengo 2 lugares de imagen y que puede formatos (jpg, jpeg, png, gif)Cómo forzar descarga de archivos en el navegador, el servidor nginx

i.domain.com/simage.jpg thumbnail 
i.domain.com/image.jpg high quality 
i.domain.com/o/image.jpg full resolution 

¿Alguien sabe cómo puedo obtener archivos de imagen in/o/para descargar en lugar de renderizar en el navegador web?

Aquí está mi archivo de configuración: http://pastebin.com/dP8kZMzx

#setup subdomain i.domain.com 
server { 
    server_name i.domain.com; 
    access_log /var/log/nginx/i..com.access.log; 
    error_log /var/log/nginx/i.domain.com.error.log; 

    root /var/www/domain.com/test1/images; 
    index index.php index.html index.htm; 

    #error_page 403 = /notfound.jpg; 
    #error_page 500 = /notfound.jpg; 

    location/{    
     #change this to a 404 img file .jpg 
     try_files $uri $uri/ /notfound.jpg; 

     rewrite "/s([A-Za-z0-9.]+)?" /small/$1 break; 
     rewrite "/o/([A-Za-z0-9.]+)?" /orig/$1 break; 
     rewrite "/([A-Za-z0-9.]+)?" /medium/$1 break; 
    } 

} 

Respuesta

19

Sólo tiene que volver cabecera HTTP Content-disposition:

location ~* /orig/(.+\.jpg)$ { 
    add_header Content-disposition "attachment; filename=$1"; 
} 
+0

Eso dio lugar a un error 404:/ – eeek

+0

Este enlace funciona para mí: http: //210mike.com/force-file-download-nginx-apache/ ubicación ~ * (. * \. pdf) { tipos {application/octet-stream .pdf; } default_type application/octet-stream; } – learnJQueryUI

3

he estado tratando de conseguir esta funcionalidad en mi propio servidor nginx.

Tengo una carpeta en el servidor que me gustaría tener abierta para cualquiera que conozca la ruta.

Para hacer eso agregué un/archivo/ubicación en mi archivo de configuración de nginx.

server { 
    listen 80; 
    server_name example.com; 

    location /file/ { 
     alias /var/openStuff/file/; 
     add_header Content-disposition "attachment"; 
    } 
} 

Cualquier solicitud de example.com/file/x irá a/var/archivo/openStuff y busque x y forzar al navegador a descargar el archivo

Esto también funciona si la ruta es /file/stuff/things.txt y lo servirá desde /var/openStuff/file/stuff/things.txt

0

Below config funciona para mí.

server { 
    ... 
    # Django media 
    location /media { 
     alias /var/www/media; 
     types { application/octet-stream .pdf; } 
     default_type application/octet-stream; 
    } 
    ... 
} 

Pero el archivo pdf debe terminar en PDF en minúsculas para que la descarga funcione. Todavía no conozco la sintaxis para agregar tanto .pdf como .PDF al archivo de configuración anterior. ¿Cualquier sugerencia? La respuesta se basa en información de http://210mike.com/force-file-download-nginx-apache/

Cuestiones relacionadas