Как форсировать загрузку файлов в браузере, на сервере nginx - PullRequest
11 голосов
/ 29 января 2012

В настоящее время у меня есть 2 расположения изображений, и они могут иметь форматы (jpg, jpeg, png, gif)

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

Кто-нибудь знает, как я могу заставить файлы изображений в / o / загружать, а не рендеритьв веб-браузере?

Вот мой файл конфигурации: 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;
    }

}

Ответы [ 3 ]

22 голосов
/ 30 января 2012

Вам просто нужно вернуть HTTP-заголовок Content-disposition:

location ~* /orig/(.+\.jpg)$ {
    add_header Content-disposition "attachment; filename=$1";
}
7 голосов
/ 24 апреля 2016

Я пытался перенести эту функцию на свой собственный сервер nginx.

У меня есть папка на сервере, которую я хотел бы открыть для всех, кто знает путь.

Длядля этого я добавил / file / location в свой конфигурационный файл 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 / file и искать x и форсироватьбраузер для загрузки файла

Это также будет работать, если путь /file/stuff/things.txt и будет обслуживать его из /var/openStuff/file/stuff/things.txt

1 голос
/ 25 апреля 2016

Ниже конфиг работает у меня.

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/

...