FastAPI 是一个现代化的高性能 Web 框架,提供了一种干净高效的方式构建 API。文件上传是许多 Web 应用程序所需的基本功能。为了实现这一点,FastAPI 提供了多种文件上传处理选项。
在某些情况下,根据 FastAPI 文档上传文件时,file2store 变量始终保持为空。尽管尝试利用 Python 的 UploadFile 或 bytes 方法,此问题仍然存在。
可以采取以下措施来解决此问题:
1.安装Python-Multipart
FastAPI 使用表单数据传输上传的文件。安装“python-multipart”可确保正确处理上传的文件。
pip install python-multipart
2.使用内存友好的文件处理
FastAPI 使用 SpooledTemporaryFile 对象将上传的文件存储在内存中。如果文件大小超过 1 MB,则会将其写入磁盘上的临时文件。对于大文件,请考虑以下选项:
3.避免阻塞端点
处理文件上传时,应使用 def 而不是 async def 定义端点函数。这可以防止服务器在等待文件操作完成时阻塞。
4.允许额外数据传输
如果您需要在上传文件的同时传输数据,请查看提供的答案以获取指导。
5.了解端点差异
熟悉 def 和 async def 端点之间的区别及其对文件处理的影响。
考虑以下内容以代码片段为例:
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}"}
此代码处理文件上传并存储内容在与上传文件同名的文件中。如果您遇到任何问题,请查阅提供的资源以获得进一步帮助。
以上是为什么我的 FastAPI 文件上传变量始终为空?的详细内容。更多信息请关注PHP中文网其他相关文章!