2016-04-22 2 views
0

Внутри /var/www/storage/ папка расположена только в mp3-файлах. Я хочу сделать, чтобы каждый запрос на эти файлы заканчивался загрузкой, а не воспроизведением в браузере.Nginx force скачать mp3 файлы

Моя текущая конфигурация выглядит так, я не могу понять, что не так.

server { 
     charset utf-8; 
     client_max_body_size 128M; 

     listen 80; ## listen for ipv4 
     server_name dl.domain.com; 
     root  /var/www/storage/; 
     location/{ 
      add_header Content-Disposition: "$request_filename"; 
     } 
    } 

ответ

0

решение для игры играть или скачивать зависит от content-type заголовок. если вы хотите, чтобы заставить браузер скачать файл вместо игры, ваш веб-сервер должен возвращать Content-Type: application/octet-stream для mp3 файлов:

location ~ /mp3folder/.+\.mp3$ { 
types { 
    application/octet-stream; 
} 
} 
0

Ваша первоначальная конфигурация почти правильно, все, что вы забываете, является «вложение»:

add_header Content-Disposition "attachment; filename=$request_filename"; 

Также рекомендуется использовать приложение/октет-поток, как было предложено raven428. Однако я считаю, что вы получите «сохранить как» в большинстве UA, не изменяя Content-Type.

Пер RFC 2616 sec19.5.1:

Если этот заголовок используется в ответ с приложением/octet- потока типа содержимого, подразумеваемое предположение о том, что агент пользователя не должен отображать ответ, а непосредственно ввести `save response as ... '.

Смежные вопросы