>백엔드 개발 >파이썬 튜토리얼 >FastAPI에서 빈 파일 업로드 문제를 해결하는 방법은 무엇입니까?

FastAPI에서 빈 파일 업로드 문제를 해결하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-20 14:48:10740검색

How to Solve Empty File Upload Issues in FastAPI?

FastAPI를 사용하여 파일을 업로드하는 방법은 무엇입니까?

문제:
FastAPI를 사용하여 파일을 업로드할 때 공식 문서에는 file2store 변수가 남아 있습니다. 비어 있습니다.

원인:

  • python-multipart가 설치되어 있는지 확인하세요.
  • def 엔드포인트를 사용할 때 .file을 사용할 수 있습니다. 실제 Python 파일에 액세스하고 해당 메서드를 동기식으로 호출하는 속성입니다.
  • 비동기 정의 엔드포인트를 사용할 때 다음을 고려하세요. 비동기식 파일 작업.
  • 파일이 너무 크면 그에 따라 청크 크기를 조정하세요. memory.

솔루션:

app.py:

from fastapi import File, UploadFile

@app.post("/create_file")
def create_file(file: UploadFile = File(...)):
    try:
        contents = file.file.read()
        # store contents to the database
    except Exception:
        return {"message": "Error uploading file"}
    finally:
        file.file.close()
    return {"message": f"Successfully uploaded {file.filename}"}

Async의 대안 엔드포인트:

@app.post("/create_file")
async def create_file(file: UploadFile = File(...)):
    try:
        contents = await file.read()
        # store contents to the database
    except Exception:
        return {"message": "Error uploading file"}
    finally:
        await file.close()
    return {"message": f"Successfully uploaded {file.filename}"}

여러 파일 업로드:

from fastapi import File, UploadFile
from typing import List

@app.post("/upload")
def upload(files: List[UploadFile] = File(...)):
    for file in files:
        try:
            contents = file.file.read()
            # store contents to the database
        except Exception:
            return {"message": "Error uploading file(s)"}
        finally:
            file.file.close()
    return {"message": f"Successfully uploaded {[file.filename for file in files]}"}

Python 스크립트 요청:

requests.post(url="SERVER_URL/create_file", files={"file": (f.name, f, "multipart/form-data")})

위 내용은 FastAPI에서 빈 파일 업로드 문제를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.