简单http文件服务器
#### server.py ####
#!/usr/bin/python3 import sys
from http.server import BaseHTTPRequestHandler, HTTPServer, CGIHTTPRequestHandler if __name__ == '__main__':
try:
handler = CGIHTTPRequestHandler
handler.cgi_directories = ['/cgi-bin', '/htbin']
port = int(sys.argv[1])
print('port is %d'% port)
server = HTTPServer(('', port), handler)
print('Welcome to my website !')
server.serve_forever() except KeyboardInterrupt:
print ('^C received, shutting down server')
server.socket.close()
#### index.html ####
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head>
<title>File Server</title>
</head>
<body>
<form action="/cgi-bin/download.py" method="get">
要下载的文件: <input type="text" name="filename" />
<input type="submit" value="download">
</form> <form enctype="multipart/form-data" action="/cgi-bin/upload.py" method="post">
要上传的文件: <input type="file" name="filename" />
<input type="submit" value="upload">
</form>
</body>
</html>
#### download.py ####
#!/usr/bin/python3 import os
import sys
import cgi form = cgi.FieldStorage() filename = form.getvalue('filename') dir_path = "/home/sxhlinux/data/"
target_path = dir_path + str(filename)
if os.path.exists(target_path) == True:
print ('Content-Type: application/octet-stream')
print ('Content-Disposition: attachment; filename = "%s"' % filename) sys.stdout.flush()
fo = open(target_path, "rb")
sys.stdout.buffer.write(fo.read())
fo.close()
else:
print("""\
Content-type: text/html\n
<html>
<head>
<meta charset="utf-8">
<title>File server</title>
</head>
<body>
<h1> %s doesn't exist in the server:
files in the server list below: </h1>""" % filename) for line in os.popen("ls -lh ~/data/"):
name = line.strip().split(' ', 8)
if len(name) == 9:
print('''<form action="/cgi-bin/download.py" method="get">
%s <input type="submit" name="filename" value="%s">
</form>''' % (line, name[8])) print('</body> <html>')
#### upload.py ####
#!/usr/bin/python3 import cgi, os form = cgi.FieldStorage() item = form['filename'] if item.filename:
fn = os.path.basename(item.filename)
open('/home/sxhlinux/data/' + fn, 'wb').write(item.file.read())
msg = 'File ' + fn + ' upload successfully !'
else:
msg = 'no file is uploaded ' print("""\
Content-type: text/html\n
<html>
<head>
<meta charset="utf-8">
<title>Hello world</title>
</head>
<body>
<h2>名称: %s</h2>
</body>
<html>
""" % (msg,))
简单http文件服务器的更多相关文章
- nginx安装及配置为简单的文件服务器
centos 6.5 直接yum安装即可 yum install nginx -y 配置文件位于:/etc/nginx/nginx.conf,里面可以修改处理器数量.日志路径.pid文件路径等,默认的 ...
- 使用socket编程实现一个简单的文件服务器
使用socket编程实现一个简单的文件服务器.客户端程序实现put功能(将一个文件从本地传到文件服务器)和get功能(从文件服务器取一远程文件存为本地文件).客户端和文件服务器不在同一台机器上. pu ...
- Nginx|构建简单的文件服务器(mac) 续-FastDFS安装(mac)|文件存储方案
目录 Nginx|构建简单的文件服务器(mac) 1 所需安装包 2 安装fastdfs-nginx-module-master 3 安装Nginx Nginx|构建简单的文件服务器(mac) 续上文 ...
- Nginx之使用nginx搭建简单的文件服务器
使用nginx可以搭建简单文件服务器 安装nginx(不详述) 修改配置文件 /usr/local/nginx/conf/nginx.conf user root; /usr/local/nginx/ ...
- [Nodejs]十分钟快速编写简单静态文件服务器
学了几天Nodejs 后我又干上了前端的活.这次遇到的问题是,我想在不同的设备上方便的查看我编写的网页,很自然的就想到要是能在本地搭建一个简单的http服务器的话,那局域网内的所有设备都可以访问了,这 ...
- python搭建简单http文件服务器
import SimpleHTTPServer import SocketServer PORT = 8000 Handler = SimpleHTTPServer.SimpleHTTPRequest ...
- 无敌简单快速的文件服务器sgfs
前言 想要构建一个Linux文件服务器?看看下面几个要求是不是你想要的? 1.只需要单节点部署就够了 2.部署启动简单,下载之后,一键启动,一键关闭 3.不需要任何其他的依赖安装,而且运行时占用内存资 ...
- 使用Go开发一个简单的服务器程序
最近有个小项目,需要一个简单的后台程序来支撑,本来想用Nodejs来做,但是由于本人js一直很菜,并且很讨厌callback,虽然我也很喜欢异步模型,但我一直都觉得JS是反人类的.后台就用了go处理, ...
- nginx配置静态文件服务器
搭建文件服务器 要点就是root目录,会自动指向索引文件 如: index, index.html等 server { client_max_body_size 4G; listen 80; ## l ...
随机推荐
- 积分图实现均值滤波的CUDA代码
没想到我2010年买的笔记本显卡GT330M 竟然还能跑CUDA,果断小试了一把,环境为CUDA6.5+VS2012,写了一个积分图实现均值滤波.类似于OpenCV的blur()函数. 使用lena. ...
- python判断两个list包含关系
a = [1,2] b = [1,2,3] c = [0, 1] set(b) > set(a) set(b) > set(c)
- linux_文件类型
linux中文件类型? 在linux系统中一切(目录.普通文件.设备文件等)皆文件 d 目录 - 普通文件 l 链接文件 b 快设备和其他外网设备 普通文件: - ...
- python_7_列表
什么是列表? --一种数据类型 -- 形式:[值1,值2,[值a,值b],值3] --可以嵌套 #!/usr/bin/python3 list_a = [1, 2, [3, 'a']] 对于 ...
- Linux中的shell到底是什么
(引自:https://zhidao.baidu.com/question/557066905.html) [一] shell的含义: 首先shell的英文含义是"壳": 它是相对 ...
- zabbix监控windows agent安装配置
下载Windows的zabbix客户端 下载地址:http://www.zabbix.com/download.php 从官方下载Zabbix Agent后,压缩包里面有2个目录,bin和conf,c ...
- 【转】一些常用的Vi命令,可帮助脱离鼠标
使用Vi编写代码时,如果想脱离鼠标,需要使用一些命令快捷键,下面罗列了一些常用的并且容易记住的: 1. 命令模式下,移动光标或跳转 0到行首 ^到行首第一个非空字符 $到行尾非空字符 fx向后移动光标 ...
- 浅谈python lambda
lambda x: x * x,实际上就是 def f(x): retrun x * x 关键字lambda表示匿名函数,冒号前的x表示函数参数. 匿名函数只能有一个表达式,不用写return,返回值 ...
- Nginx+Geoserver部署所遇问题总结
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 该问题的最终解决离不开公司大拿whs先生的指点,先表示感谢. ...
- 自动化安装DHCP配置脚本
DHCP配置脚本: #!/bin/sh NET=192.168.6.0 MASK=255.255.255.0 RANGE="192.168.6.50 192.168.6.100" ...