golang中,用github.com/gorilla/mux搭建了一个文件服务器,请帮忙看看错误在哪里

hz_wujun 发布于 2013/11/27 18:38
阅读 3K+
收藏 0
Go

我用net/http写了一个文件服务器,代码很简单,可以运行,代码如下: package main

import "net/http"

func main(){ http.Handle("/", http.FileServer(http.Dir("../template"))) http.ListenAndServe(":8888", nil) }

然后在template目录下的任何文件和目录在ie中都可以访问

然后我用net/http+github.com/gorilla/mux改写了上述代码,如下: package main

import "net/http"

 import "github.com/gorilla/mux"

func main(){ r := mux.NewRouter() r.Handle("/", http.FileServer(http.Dir("../template"))) http.ListenAndServe(":8888", nil) } 然后在ie浏览器中访问template目录下的文件和目录,就不行了,请高手看看,这是为何?


加载中
0
viney
viney
package main

import "net/http"
import "./mux"

func main() {
    r := mux.NewRouter()
    http.Handle("/", r)
    r.Handle("/", http.FileServer(http.Dir("/tmp")))
    http.ListenAndServe(":8090", nil)
}

这样就可以了



h
hz_wujun
非常感谢你的回答,但是仍然有问题,详见我的跟贴,谢谢
0
h
hz_wujun

非常感谢@viney的回答,参照你的代码,改造如下:

package main

import (
	"github.com/gorilla/mux"
	"log"
	"net/http"
)

func main() {
	r := mux.NewRouter()
	http.Handle("/", r)
	r.Handle("/", http.FileServer(http.Dir("../www"))) 
	err := http.ListenAndServe(":8090", nil)
	if err != nil {
		log.Fatal("ListenAndServe: ", err.Error())
	}
}



我的目录结构如下:

现在的问题是我以“http://localhost:8090/”访问,能够取到主页,但是浏览器下载主页包含的js文件等文件时出错,解图如下:

然后我用“http://localhost:8090/js”直接访问js目录,也访问不了,请教一下这个该如何解决?谢谢

0
viney
viney
package main

import (
	"fmt"
	"github.com/gorilla/mux"
	"net/http"
)

func someHandler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprint(w, "Normal Handler")
}

func main() {
	r := mux.NewRouter()
	http.Handle("/doc/", http.StripPrefix("/doc/", http.FileServer(http.Dir("/usr/share/doc"))))

	r.HandleFunc("/", someHandler)
	http.Handle("/", r)

	if err := http.ListenAndServe(":8090", nil); err != nil {
		panic(err)
	}
}

访问:

http://127.0.0.1:8090/doc



h
hz_wujun
多谢,积分不够,没法给你好评,抱歉,以后补上
0
viney
viney

引用来自“viney”的答案

package main

import (
	"fmt"
	"github.com/gorilla/mux"
	"net/http"
)

func someHandler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprint(w, "Normal Handler")
}

func main() {
	r := mux.NewRouter()
	http.Handle("/doc/", http.StripPrefix("/doc/", http.FileServer(http.Dir("/usr/share/doc"))))

	r.HandleFunc("/", someHandler)
	http.Handle("/", r)

	if err := http.ListenAndServe(":8090", nil); err != nil {
		panic(err)
	}
}

访问:

http://127.0.0.1:8090/doc



不是为了积分而来,不谢。
返回顶部
顶部