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

golang文件服務(wù)器的兩種方式(可以訪問(wèn)任何目錄)

 更新時(shí)間:2020年04月26日 16:18:36   作者:lxsky  
這篇文章主要介紹了golang文件服務(wù)器的兩種方式,可以訪問(wèn)任何目錄,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、方法1:

主要用到的方法是http包的FileServer,參數(shù)很簡(jiǎn)單,就是要路由的文件夾的路徑。

package main

import (
  "fmt"
  "net/http"
)

func main() {
  http.Handle("/", http.FileServer(http.Dir("./")))

  e := http.ListenAndServe(":8080", nil)
  fmt.Println(e)
}

上面例子的路由只能把根目錄也就是“/”目錄映射出來(lái),例如你寫(xiě)成”http.Handle("/files", http.FileServer(http.Dir("./")))“,就無(wú)法把通過(guò)訪問(wèn)”/files“把當(dāng)前路徑下的文件映射出來(lái)。于是就有了http包的StripPrefix方法。

二、方法2:

實(shí)現(xiàn)訪問(wèn)任意文件夾下面的文件。

package main

import (
  "fmt"
  "net/http"
)

func main() {
  mux := http.NewServeMux()
  mux.Handle("/", http.StripPrefix("/", http.FileServer(http.Dir("/"))))
  mux.Handle("/c/", http.StripPrefix("/c/", http.FileServer(http.Dir("c:"))))
  mux.Handle("/d/", http.StripPrefix("/d/", http.FileServer(http.Dir("d:"))))
  mux.Handle("/e/", http.StripPrefix("/e/", http.FileServer(http.Dir("e:"))))
  if err := http.ListenAndServe(":3008", mux); err != nil {
    log.Fatal(err)
  }
}

這里生成了一個(gè)ServeMux,與文件服務(wù)器無(wú)關(guān),可以先不用關(guān)注。用這種方式,就可以把任意文件夾下的文件路由出來(lái)了。

ps:golang實(shí)現(xiàn)的文件服務(wù)器

最近在學(xué)習(xí)golang,使用golang實(shí)現(xiàn)了一個(gè)最簡(jiǎn)單的文件服務(wù)器,程序只有簡(jiǎn)單的十多行代碼,可以編譯成windows, linux, mac多平臺(tái)可執(zhí)行文件。

源碼

package main

import (
 "fmt"
 "net/http"
 "os"
 "path/filepath"
)

func main() {
 p, _ := filepath.Abs(filepath.Dir(os.Args[0]))
 http.Handle("/", http.FileServer(http.Dir(p)))
 err := http.ListenAndServe(":8088", nil)
 if err != nil {
 fmt.Println(err)
 }
}

源碼解釋

os.Args[0]獲取的是執(zhí)行程序時(shí)的第一個(gè)參數(shù),默認(rèn)第一個(gè)參數(shù)是程序所在的目錄
filepath.Abs(filepath.Dir(os.Args[0]))是獲取當(dāng)前可執(zhí)行程序所在的絕對(duì)路徑
http.Handle("/", http.FileServer(http.Dir(p)))是開(kāi)啟一個(gè)文件服務(wù)器,使用當(dāng)前可執(zhí)行文件所在的路徑
http.ListenAndServe(":8088", nil)是監(jiān)聽(tīng)8088端口并開(kāi)啟文件服務(wù)器

編譯

要將源碼編譯成不同平臺(tái)的可執(zhí)行文件,需要使用gox工具,使用下面的命令安裝gox:

go get github.com/mitchellh/gox

執(zhí)行成功之后,使用gox命令即可自動(dòng)編譯出各個(gè)平臺(tái)的可執(zhí)行文件,如果想為某個(gè)平臺(tái)單獨(dú)編譯,可以使用如下方式:

gox -os "windows linux" -arch amd64

-os參數(shù)指定了編譯平臺(tái),-arch參數(shù)指定了處理器架構(gòu)

運(yùn)行

直接打開(kāi)編譯出來(lái)的可執(zhí)行程序,即可運(yùn)行,在瀏覽器中訪問(wèn)http://ip:8088即可看到可執(zhí)行文件所在的目錄下的所有文件。

到此這篇關(guān)于golang文件服務(wù)器可以訪問(wèn)任何目錄的文章就介紹到這了,更多相關(guān)golang文件服務(wù)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • go實(shí)現(xiàn)for range迭代時(shí)修改值的操作

    go實(shí)現(xiàn)for range迭代時(shí)修改值的操作

    這篇文章主要介紹了go實(shí)現(xiàn)for range迭代時(shí)修改值的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • Go語(yǔ)言空結(jié)構(gòu)體詳解

    Go語(yǔ)言空結(jié)構(gòu)體詳解

    本文主要介紹了Go語(yǔ)言空結(jié)構(gòu)體詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Go語(yǔ)言中并發(fā)的工作原理

    Go語(yǔ)言中并發(fā)的工作原理

    本文詳細(xì)講解了Go語(yǔ)言中并發(fā)的工作原理,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Go語(yǔ)言導(dǎo)出內(nèi)容到Excel的方法

    Go語(yǔ)言導(dǎo)出內(nèi)容到Excel的方法

    這篇文章主要介紹了Go語(yǔ)言導(dǎo)出內(nèi)容到Excel的方法,涉及Go語(yǔ)言操作excel的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • golang中import cycle not allowed解決的一種思路

    golang中import cycle not allowed解決的一種思路

    這篇文章主要給大家介紹了關(guān)于golang中import cycle not allowed解決的一種思路,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • 創(chuàng)建Go工程化項(xiàng)目布局詳解

    創(chuàng)建Go工程化項(xiàng)目布局詳解

    這篇文章主要介紹了創(chuàng)建Go工程化項(xiàng)目布局詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • go RWMutex的實(shí)現(xiàn)示例

    go RWMutex的實(shí)現(xiàn)示例

    本文主要來(lái)介紹讀寫(xiě)鎖的一種Go語(yǔ)言的實(shí)現(xiàn)方式RWMutex,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • golang如何使用gomobile進(jìn)行Android開(kāi)發(fā)

    golang如何使用gomobile進(jìn)行Android開(kāi)發(fā)

    golang可以開(kāi)發(fā)android,使用golang開(kāi)發(fā)android需要下載安裝gomobile,下面這篇文章主要給大家介紹了關(guān)于golang如何使用gomobile進(jìn)行Android開(kāi)發(fā)的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • Go語(yǔ)言線程安全之互斥鎖與讀寫(xiě)鎖

    Go語(yǔ)言線程安全之互斥鎖與讀寫(xiě)鎖

    這篇文章主要介紹了Go語(yǔ)言線程安全之互斥鎖與讀寫(xiě)鎖,互斥鎖是為了并發(fā)的安全,在多個(gè)goroutine共同工作的時(shí)候,對(duì)于共享的數(shù)據(jù)十分不安全,而讀寫(xiě)鎖效率革命,使用鎖的時(shí)候,安全與效率往往需要互相轉(zhuǎn)換,下文詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-02-02
  • Golang中errgroup的常見(jiàn)誤用詳解

    Golang中errgroup的常見(jiàn)誤用詳解

    errgroup和sync.WaitGroup類似,都可以發(fā)起執(zhí)行并等待一組協(xié)程直到所有協(xié)程運(yùn)行結(jié)束,本文主要為大家整理了一些errgroup的常見(jiàn)誤用,有需要的可以參考下
    2024-01-01

最新評(píng)論

新郑市| 白朗县| 五原县| 河池市| 武山县| 合山市| 新河县| 隆化县| 高碑店市| 密云县| 罗城| 出国| 马边| 抚州市| 莱州市| 永吉县| 策勒县| 临城县| 柘城县| 金门县| 新闻| 新蔡县| 绥中县| 佛山市| 泰来县| 肥乡县| 临安市| 昌宁县| 绥芬河市| 宣威市| 游戏| 依兰县| 德钦县| 衡水市| 闵行区| 兖州市| 镇雄县| 嘉禾县| 平远县| 松滋市| 信丰县|