FastAPIFileUploadAPI / main-OKed.py
iShare's picture
Rename main.py to main-OKed.py
81add90
raw
history blame contribute delete
No virus
1.49 kB
from fastapi import FastAPI, File, UploadFile
from pydantic import BaseModel
from pathlib import Path
from fastapi import Form
from fastapi.responses import JSONResponse
from langchain.text_splitter import RecursiveCharacterTextSplitter
from PyPDF2 import PdfReader
from fastapi import Depends
app = FastAPI()
class FileToProcess(BaseModel):
uploaded_file: UploadFile = File(...)
@app.get("/")
async def home():
return "API Working!"
@app.post("/file/upload")
async def upload_file(username: str, file_to_process: FileToProcess = Depends()):
uploaded_file = file_to_process.uploaded_file
path_to_save_file = Path.home() / username / "saved_files"
path_to_save_file.mkdir(parents=True, exist_ok=True)
file_location = f"{path_to_save_file}/{uploaded_file.filename}"
with open(file_location, "wb+") as file_object:
file_object.write(uploaded_file.file.read())
# 下面是你要处理的代码
text_splitter = RecursiveCharacterTextSplitter(
#separator = "\n",
chunk_size = 500,
chunk_overlap = 100, #striding over the text
length_function = len,
)
doc_reader = PdfReader(file_location)
raw_text = ''
for i, page in enumerate(doc_reader.pages):
text = page.extract_text()
if text:
raw_text += text
temp_texts = text_splitter.split_text(raw_text)
print(temp_texts)
return {"INFO": f"File '{uploaded_file.filename}' saved to your profile."}