2012-01-29 142 views
7

我现在有2点图像的位置和他们可能的格式(JPG,JPEG,PNG,GIF)如何强制浏览器下载文件,nginx的服务器

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

有谁知道我怎么能强迫图像文件在/ o /下载而不是在网络浏览器中呈现?

这是我的conf文件: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; 
    } 

} 

回答

19

你只需要返回HTTP标头Content-disposition

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

这导致404错误:/ – eeek 2012-02-13 18:39:03

+0

此链接为我的作品:HTTP://210mike.com/force-file-download-nginx-apache/ 位置〜* (。* \。pdf){ types {application/octet-stream .pdf; } default_type application/octet-stream; } – learnJQueryUI 2016-04-25 04:57:33

3

我一直试图让这个功能集成到自己的nginx服务器。

我有一个服务器上的文件夹,我想打开谁知道路径的任何人。

为此,我将一个/文件/位置添加到我的nginx配置文件中。

server { 
    listen 80; 
    server_name example.com; 

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

到example.com/file/x会去到/ var/openStuff /文件,查找x和强制浏览器下载文件

如果路径这也将工作的任何请求/file/stuff/things.txt并将从/var/openStuff/file/stuff/things.txt提供。

0

下面的配置适用于我。

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

但是pdf文件需要以小写字母pdf结尾才能下载。我仍然不知道将.pdf和.PDF添加到上述配置文件的语法。任何建议? 答案是基于信息从http://210mike.com/force-file-download-nginx-apache/

相关问题