I am LAZY bones? AN ancient AND boring SITE

一个支持上传的简单http server

现在,很多人都知道,python里有个SimpleHTTPServer,可以拿来方便地共享文件。比如,你要发送某个文件给局域网里的同学,你只要cd到所在路径,然后执行这么一行:

python -m SimpleHTTPServer

人家就可以访问 http://你的IP:8000 来访问你要共享的文件了。
像我早已把这个命令做了alias。
但是,某一天,你需要从同学哪里复制一个文件到本机,然后你就会跟你同学说,XX,共享下某目录。当你以为可以用http来访问他的8000端口的时候,他却告诉你,不好意思,我是windows啦~~
当然你可以选择在他windows里装个python,也可以选择使用samba、ftp等其他方式,但是有没有和之前一样简单的方式呢~
当然了,这时候,你就需要一个支持上传的简单http server,也就是我这个:SimpleHTTPServerWithUpload.py,哈哈。然后你开个服务,让人家上传即可。
其实这个就是修改自SimpleHTTPServer的,只不过我给它加上了最原始的上传功能,安全性方面没有验证过,不过理论上应该不会没人一直开着这个吧?另外,我对RFC1867的理解不一定透彻,所以,Use at your own risk!
截图如下:

代码在此,单文件、零配置,直接用python运行。

最后修改时间: 2017年03月29日 19:16

本文章发表于: 2010年05月15日 16:34 | 所属分类:精华. | 您可以在此订阅本文章的所有评论. | 您也可以发表评论, 或从您的网站trackback.

34 个评论 关于: “一个支持上传的简单http server”

  1. 嘉佑 在 2010年05月15日 16:37 说:回复

    下载+收藏

  2. levon 在 2010年05月15日 16:42 说:回复

    我订阅了嘉佑的blog和你的

    • 嘉佑 在 2010年05月15日 16:42 说:回复

      借贵地对你表示感谢 :-D

  3. Terry 在 2010年05月15日 16:42 说:回复

    这个Python内置的确实很方便,不过和Windows下的HFS – HTTP File Server(不是HFS/HFS+文件系统哦)比起来还是差了一截。

    我也来推荐两个:woof和meiga,后者有GUI,非常方便;-)

    • bones7456 在 2010年05月15日 16:50 说:回复

      呵呵,这个毕竟不是专业的,够用就好了。

    • shellex 在 2010年05月16日 13:13 说:回复

      HFS这个意大利软体确实优异….以前——一直用 。。。Sigh

      • icyomik 在 2010年09月18日 21:59 说:回复

        看来你是台湾人咯,不然应该不会用到“软体”这个词的~

  4. 嘉佑 在 2010年05月15日 16:46 说:回复

    刚刚在自己的电脑上体验了一下,灰常赞。

    • bones7456 在 2010年05月15日 16:51 说:回复

      哈哈,那就好~

  5. Iven 在 2010年05月15日 16:56 说:回复

    求批量上传……玩笑:-)

    • bones7456 在 2010年05月15日 16:58 说:回复

      其实,批量上传=打包+上传+解压。一头一尾就自己处理吧,呵呵。

  6. Tweets that mention I am LAZY bones ? : 一个支持上传的简单http server -- Topsy.com 在 2010年05月15日 17:04 说:回复

    […] This post was mentioned on Twitter by 彭嘉佑 and vvoody, 骨头. 骨头 said: li2z新文章: 一个支持上传的简单http server (http://cli.gs/MRU8g) […]

  7. vzomik 在 2010年05月15日 17:06 说:回复

    这个要顶,之前在 http://godorz.cn/2010/05/a-simple-web-server/ 看了一个简单的WEB SERVER,现在又看到一个好东东。
    要顶,要顶的。

  8. wwd 在 2010年05月15日 17:06 说:回复

    顶。。。早几天我还在找这样的东西呢

  9. chi 在 2010年05月15日 17:35 说:回复

    必须留名感谢骨头!
    以前折腾过很久也没能做个有上传功能的httpd,这下终于不用再查什么cgi, php, perl了!

  10. kaji331 在 2010年05月16日 11:20 说:回复

    额,我们在局域网里直接用iptux/飞鸽,使用简单,又有gui,方面那些用windows的同学

    • bones7456 在 2010年05月16日 11:43 说:回复

      那其实,用扣扣传,也是可以的。。。

      • shellex 在 2010年05月16日 13:11 说:回复

        QQ for Linux?没有优化过局域网文件传输

        • bones7456 在 2010年05月16日 13:18 说:回复

          呵呵,反正是可以传啦~~

          • kaji331 在 2010年05月16日 21:14 说:【 】

            我都是用皮筋,QQ for Linux据说不是很好用嘛,而且我是amd64版的系统,找不到安装包~感觉皮筋很好用啊,唯一的缺点是看不到图和不能传文件,稍稍不是很方便,不过也还是能忍受了~

  11. shellex 在 2010年05月16日 13:11 说:回复

    他却告诉你,U盘拿过来啦…

    • 沈觅仁 在 2010年05月16日 22:17 说:回复

      他却告诉你,诺,拿移动硬盘过去。。。

  12. haddy 在 2010年05月16日 17:16 说:回复

    其实是”at your own risk”…

    • bones7456 在 2010年05月16日 17:29 说:回复

      呃,我没把risk拼成史瑞克就很不错了啦~

  13. 依云 在 2010年05月16日 18:01 说:回复

    可惜没有早点看到……之前我花了好久自己折腾着用nginx(下载)+python(上传)搭建了一个。

  14. CataeroGong 在 2010年05月18日 09:55 说:回复

    嗯,在WinXP + ActivePython 2.6下试了一下,发现一个问题:
    用IE上传时,上传文件名是全路径的,代码第100行中没有过滤掉上传文件名fn[0]中的盘符,导致拼接本地文件名时得到的是上传文件的原始路径。

    • bones7456 在 2010年05月18日 10:42 说:回复

      晕晕。。。IE的 input=file ,传上来的文件名,居然是连路径的。。。。这个果然很有特色啊~~刚才试了一下才知道。。win下的chrome都正常的。
      我就不管了吧,有路径就有路径好了。

  15. 一个支持上传的简单 HTTP Server(Python) - Licess's Blog 在 2010年05月19日 17:19 说:回复

    […] Source. Thanks bones7456. } 收藏或分享这篇文章到网摘:Google书签 | 百度搜藏 | […]

  16. boy89 在 2010年05月19日 21:45 说:回复

    刚刚试了试,很好很强大~~

  17. wangzhao 在 2010年10月27日 01:01 说:回复

    打一个补丁,默认的编码设置为utf8,在form里增加一个action

    — SimpleHTTPServerWithUpload.py 2010-08-19 15:42:50.000000000 +0800
    +++ bin/SimpleHTTPServerWithUpload.py 2010-10-27 00:35:13.000000000 +0800
    @@ -64,3 +64,3 @@ class SimpleHTTPRequestHandler(BaseHTTPS
    f.write(”)
    – f.write(“\nUpload Result Page\n”)
    + f.write(“\nUpload Result Page\n”)
    f.write(“\nUpload Result Page\n”)
    @@ -189,6 +189,6 @@ class SimpleHTTPRequestHandler(BaseHTTPS
    f.write(”)
    – f.write(“\nDirectory listing for %s\n” % displaypath)
    + f.write(“\nDirectory listing for %s\n” % displaypath)
    f.write(“\nDirectory listing for %s\n” % displaypath)
    f.write(“\n”)
    – f.write(“”)
    + f.write(“”)
    f.write(“”)

  18. mandelbrot 在 2011年01月30日 12:54 说:回复

    是不是不是局域网就无法使用呢?我是ADSL的,尝试和中大的同学连接,但发现连接不上。

    • bones7456 在 2011年01月31日 13:31 说:回复

      网络这层,就和这个程序无关了。如果你没有通过路由器,用公网IP应该是能连上你的机器的;如果用了路由器,那自己设置端口映射吧。

      • mandelbrot 在 2011年01月31日 20:53 说:回复

        哦,好的,做试验试试。谢谢博主啦~~

  19. 支持upload文件的SimpleHTTPServer | Guo'Blog 在 2015年11月07日 17:26 说:回复

    […] 当时顺手搜了一下 “SimpleHTTPServer upload”,于是发现了前人已经造过轮子了……。后来又做了一番搜索,发现多数的相关的搜索结果,都是这个版本的文件。而且在某 gist 的评论中,有很多人添加了 SSL 支持,认证支持等等。本着不重复造轮子的原则,直接拿来用了。。。 […]

bones7456 发表评论




取消