문제:
다음 지침에 따라 FastAPI를 사용하여 파일을 업로드하려고 할 때 공식 문서에 따르면 file2store 변수는 지속적으로 비어 있습니다. 파일 바이트 검색에 성공한 경우는 드물지만 이는 드문 경우입니다.
해결책:
1. Python-Multipart 설치:
"양식 데이터"로 전송되는 파일 업로드를 활성화하려면 python-multipart를 아직 설치하지 않은 경우 설치하십시오:
pip install python-multipart
2. 단일 파일 업로드에 .file 속성 사용:
실제 Python 파일(예: SpooledTemporaryFile)을 얻으려면 UploadFile 객체의 .file 속성을 사용하세요. 이를 통해 .read() 및 .close()와 같은 메소드를 호출할 수 있습니다.
예:
from fastapi import File, UploadFile @app.post("/upload") def upload(file: UploadFile = File(...)): try: contents = file.file.read() with open(file.filename, 'wb') as f: f.write(contents) except Exception: return {"message": "Error uploading file."} finally: file.file.close() return {"message": f"Successfully uploaded {file.filename}"}
3. 대용량 파일 처리:
파일이 1MB 메모리 제한을 초과하는 경우 청크를 사용합니다. 필요에 따라 청크 크기를 조정하세요.
4. 비동기 읽기/쓰기:
엔드포인트에 비동기 정의가 필요한 경우 파일 내용을 읽고 쓰는 데 비동기 방법을 사용하세요.
5. 여러 파일 업로드:
@app.post("/upload") def upload(files: List[UploadFile] = File(...)): for file in files: try: contents = file.file.read() with open(file.filename, 'wb') as f: f.write(contents) except Exception: return {"message": "Error uploading file(s)."} finally: file.file.close() return {"message": f"Successfully uploaded {[file.filename for file in files]}."}
6. HTML 양식 예:
파일을 업로드하기 위한 HTML 양식 예는 제공된 링크를 참조하세요.
위 내용은 FastAPI 파일 업로드가 항상 비어 있는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!