HTTPServer接收并保存图片或文件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

HTTPServer接收并保存图⽚或⽂件导⼊所需的库
from http.server import HTTPServer, BaseHTTPRequestHandler
import json
import socket
import cgi
from cgi import parse_header, parse_multipart
import urllib.request
import io,shutil
import re
创建Request类处理HTTP请求
class Resquest(BaseHTTPRequestHandler):
def handler(self):
print("data:", self.rfile.readline().decode())
self.wfile.write(self.rfile.readline())
def do_GET(self): # 处理get请求
print(self.requestline)
if self.path != '/hello':
self.send_error(404, "Page not Found!")
return
data = {
'result_code': '1',
'result_desc': 'Success',
'timestamp': '',
'data': {'message_id':
'25d55ad283aa400af464c76d713c07ad'}
}
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
self.wfile.write(json.dumps(data).encode())
def do_POST(self): # 处理post请求
length = int(self.headers['content-length'])
req_data = self.rfile.read(length) # 读取所有http请求报⽂
print(self.headers) # 请求头信息
print(mand) # 请求⽅式
# 使⽤re解析出http请求中的图⽚,图⽚为字节类型
# 图⽚数据需要去除httpserver加进去的form-data的边界线和⽂件的描述信息
# 本例使⽤re去除boundary和⽂件描述的key:value
pattern1 = pile(b"-+\w*\s{2}(.*?\s{2}){2}\s{2}")
pattern2 = pile(b"\s{2}-+.+\s{2}")
res1 = re.match(pattern1, req_data)
res2 = re.search(pattern2, req_data)
file_data = req_data[res1.end():res2.start()]
# 将解析出的⽂件字节, 保存到本地
with open("xx.jpg", "wb") as w:
w.write(file_data)
data = {
'result_code': '2',
'result_desc': 'Success',
'timestamp': '',
'data': {'message_id':
'25d55ad283aa400af464c76d713c07ad'}
}
# 返回响应报⽂
self.send_response(200) # 响应⾏
self.send_header('Content-type', 'application/json') # 响应头
self.end_headers() # 空⾏
self.wfile.write(json.dumps(data).encode('utf-8')) # 响应体
启动服务端
if__name__ == '__main__':
host = ('127.0.0.1', 9002)
server = HTTPServer(host, Resquest)
print("Starting server, listen at: %s:%s" % host)
server.serve_forever()
使⽤postman往服务器发图⽚
后台成功接收, 并保存图⽚。

相关文档
最新文档