Watch 25 Star 85 Fork 20

codeskyblue / gohttpserverGoMIT

Create your Gitee Account
Explore and code with more than 5 million developers,Free private repositories !:)
Sign up
The best HTTP Static File Server, write with golang spread retract

Clone or download


Build Status

Make the best HTTP File Server. Better UI, upload support, apple&android install package qrcode generate.

Demo site

  • 目标: 做最好的HTTP文件服务器
  • 功能: 人性化的UI体验,文件的上传支持,安卓和苹果安装包的二维码直接生成。

Binary can be download from github releases


If using go1.5, ensure you set GO15VENDOREXPERIMENT=1

Upload size now limited to 1G




  1. Support QRCode code generate
  2. Breadcrumb path quick change
  3. All assets package to Standalone binary
  4. Different file type different icon
  5. Support show or hide hidden files
  6. Upload support (for security reason, you need enabled it by option --upload)
  7. preview
  8. HTTP Basic Auth
  9. Partial reload pages when directory change
  10. When only one dir under dir, path will combine two together
  11. Directory zip download
  12. Apple ipa auto generate .plist file, qrcode can be recognized by iphone (Require https)
  13. Plist proxy
  14. Download count statistics
  15. CORS enabled
  16. Offline download
  17. Code file preview
  18. Edit file support
  19. Global file search
  20. Hidden work download and qrcode in small screen
  21. Theme select support
  22. OK to working behide Nginx
  23. .ghs.yml support (like .htaccess)
  24. Calculate md5sum and sha
  25. Folder upload
  26. Support sort by size or modified time
  27. Add version info into index page
  28. Add api /-/info/some.(apk|ipa) to get detail info
  29. Auto tag version
  30. Custom title support
  31. Support setting from conf file


go get -v
cd $GOPATH/src/
go build && ./gohttpserver


Listen port 8000 on all interface, and enable upload

./gohttpserver -r ./ --addr :8000 --upload

Advanced usage

Support update access rule if there is a file named .ghs.yml under directory. .ghs.yml example

upload: false

For example, if there is such file under directory foo, directory foo can not be uploaded, while bar can.

root -
  |-- foo
  |    |-- .ghs.yml
  |    `-- world.txt 
  `-- bar
       `-- hello.txt

Use config file. specfied with --conf, see example config.yml. Note that command line option can overwrite conf in config.yml

ipa plist proxy

This is used for server which not https enabled. default use

./gohttpserver --plistproxy=

Proxy web site should have ability

$ http POST < app.plist
	"key": "18f99211"
$ http GET
# show the app.plist content

Upload with CURL

For example, upload a file named foo.txt to directory somedir

PS: max upload size limited to 1G (hard coded)

$ curl -F file=@foo.txt localhost:8000/somedir


How the search works

The search algorithm follow the search engine google. keywords are seperated with space, words with prefix - will be excluded.

  1. hello world means must contains hello and world
  2. hello -world means must contains hello but not contains world

Developer Guide

Depdencies are managed by godep

go get -v
go get
go get

Theme are all defined in res/themes directory. Now only two, black and green.

How to build single binary release

go-bindata-assetfs -tags bindata res/...
go build -tags bindata

That's all. ^_^

Reference Web sites


The first version is


This project is under license MIT

Comments ( 14 )

Sign in for post a comment