乱码乱a∨中文字幕,在线免费激情视频,亚洲欧美久久夜夜潮,国产在线网址

  1. <sub id="hjl7n"></sub>

    1. <sub id="hjl7n"></sub>

      <legend id="hjl7n"></legend>

      當(dāng)前位置:首頁 >  站長 >  編程技術(shù) >  正文

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

       2020-11-20 15:04  來源: 腳本之家   我來投稿 撤稿糾錯

        阿里云優(yōu)惠券 先領(lǐng)券再下單

      這篇文章主要介紹了Nginx配置實(shí)現(xiàn)下載文件的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

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

      一、配置

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

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

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

      1、root路徑配置問題

      剛開始配置的 alias D:\download,報(bào)錯: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;,報(bào)錯: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)路徑有問題,寫錯了,應(yīng)該是

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

      原因都懂,就是 \ 只是個轉(zhuǎn)義字符,要么用 \\,要么就用 /

      2、root與alias差別

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

      剛開始報(bào)錯: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/;,后面的 / 去掉了,再試,還是報(bào)錯: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ū)別。

      也就是說 當(dāng) rootD:/download; 時(shí),你請求http://localhost/download/,他找的是:D:\download\download

      而當(dāng) alias D:/download; 時(shí),你請求http://localhost/download/,他找的才是:D:\download

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

      3、中文文件問題

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

      思考良久,應(yīng)該不是nginx配置的問題了,因?yàn)楹芏嗟胤蕉颊f這樣配置就可以顯示中文了。然后我想到會不會是系統(tǒng)編碼問題呢?我用本地做服務(wù)器。使用chcp命令查了一下系統(tǒng)編碼,顯示936。一般正常能顯示中文的是936,那說明沒問題。

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

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

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

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

      add_header Content-Disposition "attachment;";

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

      一般存儲在服務(wù)器上的文件都不會用原來的名字,所以下載的時(shí)候需要改名,可通過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";
        }
      }

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

      來源:腳本之家

      鏈接: https://www.jb51.net/article/199422.htm

      申請創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

      相關(guān)文章

      熱門排行

      信息推薦