Yêu cầu python tải lên tệp nhị phân
Nhưng hãy nhớ rằng khi bạn nhập 4, 5, 2 và các hàm khác từ 8, đó thực sự là các hàm trả về các lớp đặc biệt Show
Mẹo Để khai báo Nội dung tệp, bạn cần sử dụng 2, vì nếu không, các tham số sẽ được hiểu là tham số truy vấn hoặc tham số nội dung (JSON)Các tệp sẽ được tải lên dưới dạng "dữ liệu biểu mẫu" Nếu bạn khai báo loại tham số chức năng vận hành đường dẫn của mình là 9, FastAPI sẽ đọc tệp cho bạn và bạn sẽ nhận được nội dung là 9Hãy nhớ rằng điều này có nghĩa là toàn bộ nội dung sẽ được lưu trữ trong bộ nhớ. Điều này sẽ hoạt động tốt cho các tệp nhỏ Nhưng có một số trường hợp bạn có thể hưởng lợi từ việc sử dụng 7Tham số tệp với from fastapi import FastAPI, File, UploadFile app = FastAPI() @app.post("/files/") async def create_file(file: bytes = File()): return {"file_size": len(file)} @app.post("/uploadfile/") async def create_upload_file(file: UploadFile): return {"filename": file.filename} 7¶Xác định tham số tệp với loại 7
Sử dụng 7 có một số lợi thế so với 9
from fastapi import FastAPI, File, UploadFile app = FastAPI() @app.post("/files/") async def create_file(file: bytes = File()): return {"file_size": len(file)} @app.post("/uploadfile/") async def create_upload_file(file: UploadFile): return {"filename": file.filename} 7¶ 7 có các thuộc tính sau
7 có các phương pháp 37 sau. Tất cả chúng đều gọi các phương thức tệp tương ứng bên dưới (sử dụng _____138 bên trong)
Vì tất cả các phương pháp này là phương pháp 37, bạn cần "chờ đợi" chúngVí dụ: bên trong hàm vận hành đường dẫn 37, bạn có thể lấy nội dung bằng 3Nếu bạn đang ở trong một chức năng vận hành đường dẫn 77 bình thường, bạn có thể truy cập trực tiếp vào 78, chẳng hạn 8 37 Chi tiết kỹ thuậtKhi bạn sử dụng các phương thức 37, FastAPI sẽ chạy các phương thức tệp trong nhóm luồng và chờ chúngChi tiết kỹ thuật của Starlette 7 của FastAPI kế thừa trực tiếp từ 7 của Starlette, nhưng thêm một số phần cần thiết để làm cho nó tương thích với Pydantic và các phần khác của FastAPI"Dữ liệu Biểu mẫu"¶Cách biểu mẫu HTML ( 23) gửi dữ liệu đến máy chủ thường sử dụng mã hóa "đặc biệt" cho dữ liệu đó, nó khác với JSONFastAPI sẽ đảm bảo đọc dữ liệu đó từ đúng nơi thay vì JSON chi tiết kỹ thuật Dữ liệu từ các biểu mẫu thường được mã hóa bằng cách sử dụng "loại phương tiện" 24 khi nó không bao gồm các tệpNhưng khi biểu mẫu bao gồm các tệp, nó được mã hóa thành 25. Nếu bạn sử dụng 2, FastAPI sẽ biết nó phải lấy các tệp từ đúng phần nội dungNếu bạn muốn đọc thêm về các mã hóa và trường biểu mẫu này, hãy truy cập tài liệu web MDN cho 27Cảnh báo Bạn có thể khai báo nhiều tham số 2 và 1 trong thao tác đường dẫn, nhưng bạn cũng không thể khai báo các trường 0 mà bạn muốn nhận dưới dạng JSON, vì yêu cầu sẽ có phần thân được mã hóa bằng cách sử dụng 25 thay vì 12Đây không phải là hạn chế của FastAPI, nó là một phần của giao thức HTTP Tải lên tệp tùy chọn¶Bạn có thể tạo tệp tùy chọn bằng cách sử dụng chú thích loại tiêu chuẩn và đặt giá trị mặc định là 13Trăn 3. 6 trở lênPython 3. 10 trở lên 9 7from fastapi import FastAPI, File, UploadFile app = FastAPI() @app.post("/files/") async def create_file(file: bytes = File()): return {"file_size": len(file)} @app.post("/uploadfile/") async def create_upload_file(file: UploadFile): return {"filename": file.filename} 7 với Siêu dữ liệu bổ sung¶Ví dụ, bạn cũng có thể sử dụng 36 với 7 để đặt siêu dữ liệu bổ sung 2Tải lên nhiều tệp¶Có thể tải lên nhiều tệp cùng một lúc Chúng sẽ được liên kết với cùng một "trường biểu mẫu" được gửi bằng "dữ liệu biểu mẫu" Để sử dụng điều đó, hãy khai báo một danh sách 9 hoặc 7Trăn 3. 6 trở lênPython 3. 9 trở lên 1 2Bạn sẽ nhận được, như đã khai báo, một 19 của 9 hoặc 7chi tiết kỹ thuật Bạn cũng có thể sử dụng 22FastAPI cung cấp 23 giống như 24 để thuận tiện cho bạn, nhà phát triển. Nhưng hầu hết các phản hồi có sẵn đến trực tiếp từ StarletteTải lên nhiều tệp với siêu dữ liệu bổ sung¶Và giống như trước đây, bạn có thể sử dụng 36 để đặt các tham số bổ sung, ngay cả đối với 7Trăn 3. 6 trở lênPython 3. 9 trở lên 0 1Tóm tắt lại¶Sử dụng 2, 9 và 7 để khai báo các tệp sẽ được tải lên trong yêu cầu, được gửi dưới dạng dữ liệu biểu mẫu |