亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現golang文件服務器

發布時間:2020-07-30 13:47:01 來源:億速云 閱讀:284 作者:小豬 欄目:編程語言

這篇文章主要為大家展示了如何實現golang文件服務器,內容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

一、方法1:

主要用到的方法是http包的FileServer,參數很簡單,就是要路由的文件夾的路徑。

package main

import (
  "fmt"
  "net/http"
)

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

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

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

二、方法2:

實現訪問任意文件夾下面的文件。

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)
  }
}

這里生成了一個ServeMux,與文件服務器無關,可以先不用關注。用這種方式,就可以把任意文件夾下的文件路由出來了。

ps:golang實現的文件服務器

最近在學習golang,使用golang實現了一個最簡單的文件服務器,程序只有簡單的十多行代碼,可以編譯成windows, linux, mac多平臺可執行文件。

源碼

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]獲取的是執行程序時的第一個參數,默認第一個參數是程序所在的目錄
filepath.Abs(filepath.Dir(os.Args[0]))是獲取當前可執行程序所在的絕對路徑
http.Handle("/", http.FileServer(http.Dir(p)))是開啟一個文件服務器,使用當前可執行文件所在的路徑
http.ListenAndServe(":8088", nil)是監聽8088端口并開啟文件服務器

編譯

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

go get github.com/mitchellh/gox

執行成功之后,使用gox命令即可自動編譯出各個平臺的可執行文件,如果想為某個平臺單獨編譯,可以使用如下方式:

gox -os "windows linux" -arch amd64

-os參數指定了編譯平臺,-arch參數指定了處理器架構

運行

直接打開編譯出來的可執行程序,即可運行,在瀏覽器中訪問http://ip:8088即可看到可執行文件所在的目錄下的所有文件。

以上就是關于如何實現golang文件服務器的內容,如果你們有學習到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

遵化市| 阳城县| 榆中县| 鄂温| 阿拉善盟| 贵溪市| 五河县| 阳城县| 寿宁县| 中西区| 噶尔县| 东兰县| 大连市| 荆州市| 新宾| 白玉县| 天津市| 新兴县| 津南区| 苍溪县| 凤冈县| 灵丘县| 富锦市| 双牌县| 新田县| 孝感市| 安丘市| 东平县| 休宁县| 宁波市| 江山市| 兖州市| 荣成市| 敦化市| 沧源| 南川市| 广昌县| 隆昌县| 东至县| 武邑县| 老河口市|