FASTAPIを使ってPOSTでファイルを送り込む方法
> uvicorn main:app --reload
main.py
import uvicorn
from fastapi import FastAPI, File, UploadFile
import shutil
import os
app = FastAPI()
@app.post("/files/")
async def file(file: bytes = File(...)):
content = file.decode('utf-8')
formatfile = content.split('\n')
return {'filedetail': formatfile}
@app.post("/uploadfile/")
async def upload_file(file: UploadFile = File(...)):
if file:
filename = file.filename
fileobj = file.file
#UPLOAD_DIR = os.getcwd()
#print(UPLOAD_DIR)
#upload_dir = open(os.path.join(UPLOAD_DIR, filename),'wb+')
upload_dir = open(os.path.join("C:\\Users\\ebata\\fastapi6\\", filename),'wb+')
shutil.copyfileobj(fileobj, upload_dir)
upload_dir.close()
return {"アップロードファイル名": filename}
return {"Error": "アップロードファイルが見つかりません。"}
'''
@app.post("/uploadfile/")
async def upload_file(file: UploadFile = File(...)):
return {'filename': file.filename}
'''
クライアントは、こうなる。
前提は、C:\Users\ebata に dummy.txtがあること。
そして上記のmain.pyは、C:\Users\ebata\fastapi6にあること(まあ、そのへんは適当に変えて使って下さい)
C:\Users\ebata>curl -X POST http://127.0.0.1:8000/uploadfile/ -H 'accept: application/json' -H 'Content-Type: multipart/form-data' -F file=@dummy.txt;type=text/plain
クライアントプログラムは作成中