服务端:
# !/usr/bin/python # -*- coding: utf-8 -*- import json import time from typing import List, Dict, Set from fastapi import FastAPI, Request, status, Form, Body, Query,File,UploadFile from fastapi import Header from fastapi.exceptions import RequestValidationError from fastapi.responses import JSONResponse from pydantic import BaseModel from pydantic import conint, validator from multiprocessing import Process, Value import uvicorn app = FastAPI() @app.post("/file_upload") async def file_upload(file: UploadFile = File(...)): start = time.time() try: res = await file.read() with open(file.filename, "wb") as f: f.write(res) return {"message": "success", 'time': time.time() - start, 'filename': file.filename} except Exception as e: return {"message": str(e), 'time': time.time() - start, 'filename': file.filename} @app.post("/uploadfiles/") async def create_upload_files(files: List[UploadFile] = File(...)): try: for file in files: res = await file.read() with open(file.filename, "wb") as f: f.write(res) return {"message": "success", "filenames": [file.filename for file in files]} except Exception as e: return {"message": str(e), "filenames": [file.filename for file in files]} def http_worker(alive,host,port): uvicorn.run(app='httpd_test:app', host=host, port=port, workers=1, reload=False, debug=False, access_log=False, log_level='error') alive = Value('b', False) if __name__ == "__main__": alive.value = True p = Process(target=http_worker, args=(alive, '0.0.0.0', 9081), daemon=True) p.start() time.sleep(2) print("start") while True: str1 = input("请输入q退出:") if str1 == "q": break p.join(0.5) alive.value = False print("exit")
客户端:
#!/usr/bin/env python # -*- coding: utf-8 -*- import requests url = "http://127.0.0.1:9081/uploadfiles" path = "E:\\test\\123.jpeg" path1 = "E:\\test\\222.png" files = [ ("files", open(path, "rb")), ("files", open(path1, "rb")) ] files1 = {'files': open(path, 'rb')} r = requests.post(url, files=files) print(r.url) print(r.text)
其中多个文件要用list的写法:
files = [ ("files", open(path, "rb")), ("files", open(path1, "rb")) ]