最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx配置實現(xiàn)下載文件的示例代碼

 更新時間:2020年11月11日 09:39:00   作者:古蘭精  
這篇文章主要介紹了Nginx配置實現(xiàn)下載文件的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

  偶爾聽人說用nginx實現(xiàn)文件上傳下載,之前看nginx實踐大致看到過,沒有細究。所以今天就想研究下nginx實現(xiàn)文件的上傳下載,直接開搞,本地服務啟起。這里記錄下配置及踩坑記錄。

一、配置

http {
 ...
 server: {
 # 配置下載
  location /download {
   root D:\\download;
   autoindex on;
   autoindex_exact_size off;
  }
 }
 ...
}

  這是目錄里隨便放的幾個文件,可以看到實現(xiàn)成功。

  這里踩過幾個坑,下面提示下:

1、root路徑配置問題

  剛開始配置的 alias D:\download,報錯:2020/08/14 10:36:06 [emerg] 26396#16140: invalid number of arguments in "alias" directive in D:\Program File\nginx\nginx-1.13.12/conf/nginx.conf:74

  那么查配置 74 行,發(fā)現(xiàn)少了分號,加上問題依舊。換成 root D:\download;,報錯:2020/08/14 10:44:20 [emerg] 21376#17156: invalid number of arguments in "root" directive in D:\Program File\nginx\nginx-1.13.12/conf/nginx.conf:74

  問題依舊,后來發(fā)現(xiàn)路徑有問題,寫錯了,應該是

root D:/download;
// 或者
root D:\\download;

  原因都懂,就是 \ 只是個轉義字符,要么用 \\,要么就用 /

2、root與alias差別

  ok,這樣配置可以了。但是當我輸入:http://localhost/download/,報錯404,我的D盤目錄下為D:/download/*,然后其他文件

  剛開始報錯:2020/08/14 11:02:49 [error] 9928#12876: *11 CreateFile() "D:\download\/download" failed (2: The system cannot find the file specified), client: 127.0.0.1, server: , request: "GET /download HTTP/1.1", host: "localhost"

  看到這個路徑D:\download\/download這里有問題,所以我把配置rootD:/download/;,后面的 / 去掉了,再試,還是報錯:2020/08/14 11:04:15 [error] 3128#11636: *1 CreateFile() "D:\download/download" failed (2: The system cannot find the file specified), client: 127.0.0.1, server: , request: "GET /download HTTP/1.1", host: "localhost"

  所以考慮到不是路徑的問題,那么問題原因在哪?在于 root 與 alias 配置的區(qū)別。

  也就是說 當 rootD:/download; 時,你請求http://localhost/download/,他找的是:D:\download\download

  而當 alias D:/download; 時,你請求http://localhost/download/,他找的才是:D:\download

  那么我把我的本地路徑改一下:D:/download/download/*,然后再是其他文件,那么就成功了。

3、中文文件問題

  還有坑,點擊全英文名文件是正常預覽下載的,中文名文件報錯。在 server段中添加 charset utf-8; 也不行,或者 charset gbk,utf-8; 也不行。有清楚的,煩請不吝賜教,謝謝。

  思考良久,應該不是nginx配置的問題了,因為很多地方都說這樣配置就可以顯示中文了。然后我想到會不會是系統(tǒng)編碼問題呢?我用本地做服務器。使用chcp命令查了一下系統(tǒng)編碼,顯示936。一般正常能顯示中文的是936,那說明沒問題。

  雖然中文顯示是正常的,但是**的,一點還是報錯,亂碼或者404。沒辦法直接點擊下載中文名文件,或者瀏覽中文名目錄。

  中文名文件下載可以通過 復制文件名,然后貼在瀏覽器url后面,就可以下載下來了,中文名目錄是真的無法瀏覽!??!

  原因是,windows服務器中文是gbk編碼,nginx的這種頁面的href就是用gbk進行urlencode的,然后一般瀏覽器都是使用utf-8的,當然就沒法訪問了。

4、想防止瀏覽器自動打開文件而不是下載文件,添加

add_header Content-Disposition "attachment;";
// 所有文件都不打開
location / {
 add_header Content-Disposition "attachment;filename*=utf-8'zh_cn'$arg_n";
}

  一般存儲在服務器上的文件都不會用原來的名字,所以下載的時候需要改名,可通過url中添加參數(shù),然后在nginx中根據(jù)參數(shù)來改名。

  舉例:參數(shù)為 n=xxx.jpg

  url:https"http://xxxxx?n=xxx.jpg //表示把下載下來的文件名字改為xxx.jpg

  nginx需要配置成

location / {
  if ($request_uri ~* ^.*\?n=([^&]+)$) {
    add_header Content-Disposition "filename*=$arg_n";
  }
}

  注釋:里面的utf-8是有些瀏覽器會自動把文件改成urlencode的格式

  一般1,2都是要一起配置的

location / {
  if ($request_uri ~* ^.*\?n=([^&]+)$) {
    add_header Content-Disposition "attachment;filename*=$arg_n";
  }
}

到此這篇關于Nginx配置實現(xiàn)下載文件的示例代碼的文章就介紹到這了,更多相關Nginx 下載文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 在GridView中LinkButton的屬性的應用(如何不用選中就刪除這一行)

    在GridView中LinkButton的屬性的應用(如何不用選中就刪除這一行)

    GridView中LinkButton的屬性的應用,實現(xiàn)不用選中就刪除這一行
    2009-04-04
  • asp.net?core集成ElasticSearch實現(xiàn)全文檢索功能

    asp.net?core集成ElasticSearch實現(xiàn)全文檢索功能

    索引是Elasticsearch中用于存儲文檔的容器,你可以使用Elasticsearch的REST?API、官方客戶端庫(如NEST)或Kibana等工具來創(chuàng)建和管理索引,本文給大家介紹asp.net?core集成ElasticSearch實現(xiàn)全文檢索功能,感興趣的朋友一起看看吧
    2024-08-08
  • .NET Core中RabbitMQ使用死信隊列的實現(xiàn)

    .NET Core中RabbitMQ使用死信隊列的實現(xiàn)

    本文主要介紹了.NET Core中RabbitMQ使用死信隊列的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • WPF框架Prism中區(qū)域Region用法介紹

    WPF框架Prism中區(qū)域Region用法介紹

    這篇文章介紹了WPF框架Prism中區(qū)域Region用法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-02-02
  • c# indexof 用法深入理解

    c# indexof 用法深入理解

    在開發(fā)過程中經(jīng)常會使用到c# indexof 查找字串中指定字符或字串首次出現(xiàn)的位置,返首索引值,本文將詳細介紹,需要的朋友可以參考下
    2012-11-11
  • asp.net基于替換模版頁的形式生成靜態(tài)頁的方法

    asp.net基于替換模版頁的形式生成靜態(tài)頁的方法

    這篇文章主要介紹了asp.net基于替換模版頁的形式生成靜態(tài)頁的方法,涉及asp.net模板的設置、變量替換、配置文件設置與讀取、以及文件夾與靜態(tài)文件的創(chuàng)建等技巧,需要的朋友可以參考下
    2016-07-07
  • ASP.NET使用GridView導出Excel實現(xiàn)方法

    ASP.NET使用GridView導出Excel實現(xiàn)方法

    這篇文章主要介紹了ASP.NET使用GridView導出Excel實現(xiàn)方法,是asp.net操作office文件的一個典型應用,代碼中備有較為詳盡的注釋便于讀者理解,需要的朋友可以參考下
    2014-11-11
  • .net基礎收集匯總

    .net基礎收集匯總

    最近的面試讓我知道基礎知識的重要性,而我也每天都在網(wǎng)上找一些基礎題來看。其實面試無非都是一些理論基礎,只有基礎過關了,才會被問到技術性的問題,所以第一關一定要打好
    2013-07-07
  • 完美解決Could not load file or assembly AjaxPro.2 or one of its dependencies. 拒絕訪問。

    完美解決Could not load file or assembly AjaxPro.2 or one of its

    Could not load file or assembly AjaxPro.2,經(jīng)排查原來是mcafee限制了
    2007-08-08
  • Entity?Framework代碼優(yōu)先Code?First入門

    Entity?Framework代碼優(yōu)先Code?First入門

    這篇文章介紹了Entity?Framework的代碼優(yōu)先模式Code?First,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06

最新評論

龙江县| 新建县| 彝良县| 泾源县| 博白县| 汪清县| 安岳县| 深泽县| 南城县| 申扎县| 建平县| 泗洪县| 会同县| 西峡县| 修文县| 贺兰县| 健康| 冀州市| 凤城市| 兴安盟| 孝义市| 阿鲁科尔沁旗| 凤台县| 大洼县| 上思县| 米泉市| 通化县| 密山市| 绵竹市| 开江县| 长宁区| 图片| 潍坊市| 北辰区| 西峡县| 武威市| 儋州市| 平凉市| 亳州市| 措美县| 金坛市|