2012-01-29 10 views
7

Al momento ho 2 sedi di immagini e possono i formati (jpg, jpeg, png, gif)Come forzare il download di file nel browser, il server nginx

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

qualcuno sa come posso forzare i file di immagine in/o/per scaricare anziché eseguire il rendering nel browser web?

Ecco il mio file di configurazione: 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; 
    } 

} 

risposta

19

Hai solo bisogno di tornare un'intestazione HTTP Content-disposition:

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

che ha provocato un errore 404:/ – eeek

+0

Questo collegamento funziona per me: http: //210mike.com/force-file-download-nginx-apache/ posizione ~ * (. * \. pdf) { types {application/octet-stream .pdf; } default_type application/octet-stream; } – learnJQueryUI

3

ho cercato di ottenere questa funzionalità nel mio server nginx.

Ho una cartella sul server che vorrei aprire per chiunque conosca il percorso.

Per fare ciò ho aggiunto un/file/posizione nel mio file di configurazione nginx.

server { 
    listen 80; 
    server_name example.com; 

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

Qualsiasi richiesta di example.com/file/x andrà a///var file openStuff e potete trovare x e forzare il browser a scaricare il file

Questo funziona anche se il percorso è /file/stuff/things.txt e lo servirà da /var/openStuff/file/stuff/things.txt

0

Sotto configurazione funziona per me.

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

Ma il file pdf deve termina con pdf minuscole per il download al lavoro. Non conosco ancora la sintassi per aggiungere entrambi .pdf e .PDF al file di configurazione precedente. Qualche suggerimento? La risposta si basa su informazioni da http://210mike.com/force-file-download-nginx-apache/

Problemi correlati