分享 有没有快速建立 HTTP 服务器进行文件共享的方法?

jiang_plus · 2013年04月21日 · 最后由 googya 回复于 2013年04月23日 · 7018 次阅读

Python 有一个 python -m SimpleHTTPServer 8080,可以用来在一个文件夹建立一个基于 HTTP 的文件服务器,相信这个技巧很多人都已经知道了

想问问 Ruby 有没有相同的用法?

来个 golang 的

go run filename.go

package main

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

    func main(){

        fileServer := http.FileServer(http.Dir("./"))
        err := http.ListenAndServe(":3000", fileServer)

        if err != nil {
            fmt.Println("some error", err.Error())
            os.Exit(1)
        }
    }

Python

$ python -m SimpleHTTPServer
http://localhost:8000/

PHP(~> 5.4)

$ php -S localhost:8000
http://localhost:8000/

Ruby

$ gem install white_castle
$ white_castle .
http://localhost:3000/

Rack 里面自带了一个中间件,所以可以这样 在目录下新建 config.ru

# encoding: UTF-8
#\ -w -p 80
require 'rack/mime'
use Rack::ContentLength

app = Rack::Directory.new Dir.pwd
run app

然后到目录下执行 rackup 不过这个对中文支持有点问题

#2 楼 @krazy 觉得这个方案最好用,能不能让 white_castle 用 thin 等其它 server,默认的 webrick 太恶心了

@jiang_plus
静态文件这个区别很大吗 https://github.com/nodanaonlyzuul/white_castle/blob/master/lib/white_castle.rb 这个代码挺简单的...三楼哪个也挺好的..

在 home 目录建一个 config.ru。然后切换到任意目录:

rackup ~/config.ru

即可,觉得烦就建个 alias http://rubyer.me/blog/2012/12/12/ruby-simple-http-server-with-rack/

ruby 一行流 rackup -b "run Rack::Directory.new '.'" 。

#7 楼 @googya 试过了 貌似没有-b 选项 -e 也不行 没有 run 方法,必须写成一个文件用 rackup 去跑。

@iBachue 那估计是 rack 的版本的问题了

~ $ rackup -v Rack 1.2 (Release: 1.5)

需要 登录 后方可回复, 如果你还没有账号请 注册新账号