from http.server import HTTPServer, BaseHTTPRequestHandler
import json
import os,win32process,win32event
import re,pymysql,uuid


class Resquest(BaseHTTPRequestHandler):
    def do_GET(self):
        print(self.requestline)
        if self.path != \'/hello\':
            self.send_error(404, "Page not Found!")
            return

    def do_POST(self):
        # print(self.headers)
        data = str(self.headers)
        data_type = data.split("\n")
        res_type = data_type[0].split(":")[1]
        print(res_type)
        uuid_str = uuid.uuid4().hex
        req_datas = self.rfile.read(int(self.headers[\'content-length\']))
        pattern1 = re.compile(b"-+\w+\s{2}(.*?\s{2}){2}\s{2}")
        pattern2 = re.compile(b"\s{2}-+\w+-+\s{2}")
        res1 = re.match(pattern1, req_datas)
        res2 = re.search(pattern2, req_datas)
        file_data = req_datas[res1.end():res2.start()]
        if res_type == " jpg":
            with open(r"C:\Users\Administrator\Desktop\ocr\data\jpg\%s.jpg"%uuid_str, "wb") as w:
                w.write(file_data)
            # 9个参数,第二个参数输入命令
            handle = win32process.CreateProcess(None,"C:\\Users\\Administrator\\Desktop\\ocr\\img2pdf.exe C:\\Users\\Administrator\\Desktop\\ocr\\data\\jpg\\%s.jpg C:\\Users\\Administrator\\Desktop\\ocr\\data\\jpg\\%s.pdf"%(uuid_str,uuid_str),None, None, 0, 0, None, None, win32process.STARTUPINFO())
            # 等待进程执行完,返回0
            flag = win32event.WaitForSingleObject(handle[0],300000)
            # print(handle[0])
            print(flag)
            db = pymysql.connect("127.0.0.1", "root", "123", "ocr")
            cursor = db.cursor()
            sql = "INSERT INTO ocr(name,path) VALUES(\'%s\',\'C:\\Users\\Administrator\\Desktop\\ocr\\data\\jpg\\%s.pdf\')"%(uuid_str,uuid_str)
            cursor.execute(sql)
            db.commit()  # 提交数据
            cursor.close()
            db.close()

            if flag!=0:
                # 杀死进程
                win32process.TerminateProcess(handle[0],0)

            if os.path.exists(r"C:\\Users\\Administrator\\Desktop\\ocr\\data\\jpg\\%s.txt"%uuid_str):
                with open("C:\\Users\\Administrator\\Desktop\\ocr\\data\\jpg\\%s.txt"%uuid_str,"r",encoding="utf8")as f:
                    res = f.read()
                    print(res)
                    data = {
                        \'result_code\': \'1\',
                        \'result_desc\': \'Success\',
                        \'file_data\': res,
                    }
                    self.send_response(200)
                    self.send_header(\'Content-type\', \'application/json\')
                    self.end_headers()
                    self.wfile.write(json.dumps(data).encode("utf-8"))


        elif res_type == " pdf":
            # print(req_datas)
            with open(r"C:\Users\Administrator\Desktop\ocr\data\pdf\xx.pdf", "wb") as w:
                w.write(req_datas)
            handle = win32process.CreateProcess(None,"C:\\Users\\Administrator\\Desktop\\ocr\\pdf2spdf.exe C:\\Users\\Administrator\\Desktop\\ocr\\data\\pdf\\xx.pdf C:\\Users\\Administrator\\Desktop\\ocr\\data\\pdf\\%s.pdf"%(uuid_str),None, None, 0, 0, None, None, win32process.STARTUPINFO())
            flag = win32event.WaitForSingleObject(handle[0], 300000)

            db = pymysql.connect("127.0.0.1", "root", "123", "ocr")
            cursor = db.cursor()
            sqq = "INSERT INTO ocr(name,path) VALUES(\'%s\',\'C:\\Users\\Administrator\\Desktop\\ocr\\data\\pdf\\%s.pdf\')"%(uuid_str,uuid_str)
            cursor.execute(sqq)
            db.commit()  # 提交数据
            cursor.close()
            db.close()

            if flag!=0:
                win32process.TerminateProcess(handle[0],0)

            if os.path.exists(r"C:\\Users\\Administrator\\Desktop\\ocr\\data\\pdf\\%s_.txt"%uuid_str):
                with open("C:\\Users\\Administrator\\Desktop\\ocr\\data\\pdf\\%s_.txt"%uuid_str,"r",encoding="utf8")as f:
                    res = f.read()
                    print("44")
                    print(res)
                    data = {
                        \'result_code\': \'2\',
                        \'result_desc\': \'Success\',
                        \'file_data\': res,
                    }
                    self.send_response(200)
                    self.send_header(\'Content-type\', \'application/json\')
                    self.end_headers()
                    self.wfile.write(json.dumps(data).encode(\'utf-8\'))
            else:
                return None
        else:
            return "error"


if __name__ == \'__main__\':
    host = (\'127.0.0.1\', 9002)
    server = HTTPServer(host, Resquest)
    print("Starting server, listen at: %s:%s" % host)
    server.serve_forever()

 

版权声明:本文为xuezhihao原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xuezhihao/p/11394649.html