python http服务器_Python HttpServer服务器

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import sys

import os #Python的标准库中的os模块包含普遍的操作系统功能

import re #引入正则表达式对象

import urllib #用于对URL进行编解码

if sys.version_info < (3, 0):

from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler #导入HTTP处理相关的模块

else :

from http.server import HTTPServer, BaseHTTPRequestHandler

import cgi #文件上传处理

import base64 #base64编码

from io import BytesIO #本地文件读取

#自定义处理程序,用于处理HTTP请求

class EasyHTTPHandler(BaseHTTPRequestHandler):

def do_RespHtml(self, html):

self.protocal_version = 'HTTP/1.1' #设置协议版本

self.send_response(200) #设置响应状态码

self.send_header("Welcome", "Contect") #设置响应头

self.end_headers()

if sys.version_info >= (3, 0):

html = html.encode('utf-8')

self.wfile.write(html) #输出响应内容

def do_ImageHtml(self, img):

templateStr = '''

EasyHttpServer

选择图片:

{0}

'''.format(img)

self.do_RespHtml(templateStr)

def do_FileRecv(self):

form = cgi.FieldStorage(

fp=self.rfile,

headers=self.headers,

environ={'REQUEST_METHOD':'POST',

'CONTENT_TYPE':self.headers['Content-Type'],

}

)

imageHtml = ""

for field in form.keys():

field_item = form[field]

filename = field_item.filename

filevalue = field_item.value

filesize = len(filevalue)#文件大小(字节)

#print len(filevalue)

#print (filename)

ext = os.path.splitext(filename)[1]

if sys.version_info >= (3, 0):

filename = filename.encode('utf-8')

with open(filename, 'wb') as f:

f.write(filevalue)

#将图片保存到内存中

f = BytesIO()

with open(filename, 'rb') as img:

f.write(img.read())

#从内存中取出bytes类型的图片

data = f.getvalue()

#将bytes转成base64

data = base64.b64encode(data).decode()

imageHtml += "

self.do_ImageHtml(imageHtml)

def doIndexHtml(self):

#获取URL

#print 'URL=',self.path

#页面输出模板字符串

templateStr = '''

EasyHttpServer

选择图片:

'''

self.do_RespHtml(templateStr)

#处理GET请求

def do_GET(self):

self.doIndexHtml()

#处理POST请求

def do_POST(self):

self.do_FileRecv()

#启动服务函数

def start_server(port):

http_server = HTTPServer(('', int(port)), EasyHTTPHandler)

http_server.serve_forever() #设置一直监听并接收请求

#os.chdir('static') #改变工作目录到 static 目录

start_server(8000) #启动服务,监听8000端口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值