양식 데이터 및 SpooledTemporaryFile을 사용하여 FastAPI로 파일 업로드
멀티파트/양식 데이터와 함께 FastAPI를 사용하여 파일을 업로드하려면 설치하는 것이 좋습니다. 멀티파트 파일인 python-multipart는 다음을 통해 전송됩니다. form-data.
pip install python-multipart
다음은 FastAPI를 사용하여 파일을 업로드하는 개선된 예입니다.
from fastapi import File, UploadFile from typing import List @app.post("/upload") def upload(file: UploadFile = File(...)): try: # Using file.file for synchronous operations (e.g., opening a file on disk) contents = file.file.read() with open(file.filename, 'wb') as f: f.write(contents) except Exception: return {"message": "An error occurred while uploading the file."} finally: file.file.close() return {"message": f"Successfully uploaded {file.filename}"}
큰 파일을 청크로 처리해야 하는 경우 파일을 더 작은 단위로 읽는 것이 좋습니다. . 수동 루프를 사용할 수 있습니다:
@app.post("/upload") def upload(file: UploadFile = File(...)): try: with open(file.filename, 'wb') as f: while contents := file.file.read(1024 * 1024): f.write(contents) except Exception: return {"message": "An error occurred while uploading the file."} finally: file.file.close() return {"message": f"Successfully uploaded {file.filename}"}
또는 데이터를 청크로 읽고 쓰는 quitil.copyfileobj() 메서드를 사용할 수 있습니다:
from shutil import copyfileobj @app.post("/upload") def upload(file: UploadFile = File(...)): try: with open(file.filename, 'wb') as f: copyfileobj(file.file, f) except Exception: return {"message": "An error occurred while uploading the file."} finally: file.file.close() return {"message": f"Successfully uploaded {file.filename}"}
추가 참고 사항 :
위 내용은 'form-data'를 사용하여 FastAPI 서버에 파일을 효율적으로 업로드하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!