/fileserver

Better looking file server package for Go

Primary LanguageGoMIT LicenseMIT

Fileserver offers a more advanced file server than the basic file server that is a part of Go.

In Go to serve a directory you can pass something like this:

http.Handle("/", http.FileServer(http.Dir(*directory)))

When you go to "/" you get a basic list of files that you can click on. What this fileserver does is offer more information on the files.

Example:

package main

import (
	"log"
	"net/http"
	"os"

	"github.com/rmasci/fileserver"
)

var lgOut *log.Logger

func main() {
	html := os.Getenv("PWD") + "/html"
	lgOut := log.New(os.Stdout, "", log.Lshortfile)
	dwnld := fileserver.Directory{
		Lgout:  lgOut,
		Px:     15,
		Srv:    html,
		Header: "MyFiles",
	}

	http.HandleFunc("/downloads/", dwnld.Fileserver)
	//redirect to downloads
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		http.Redirect(w, r, "/downloads/", http.StatusFound)
	})

	// let user know when server is listening on port
	lgOut.Println("Listening on port 8888")

	if err := http.ListenAndServe(":8888", nil); err != nil {
		log.Fatal(err)
	}
}

![alt-text][screenshot] (https://github.com/rmasci/fileserver/Fileserver.png "Screenshot Fileserver.png") Todo: Document code, document better examples.