我正在尝试将文件 (csv) 上传到 FastAPI POST
端点。
这是服务器代码:
@app.post("/csv/file/preview")
async def post_csv_file_preview(file: UploadFile):
"""
:param file:
:return:
"""
contents = file.file.read()
print(contents)
但是如果文件很小,内容是空的。如果我增加文件内容(在 csv 文件中添加新行),而没有任何其他更改,则它可以正常工作。
如果直接获取请求体,则正常返回文件内容。
print(await request.body())
问题仅出在我的生产服务器上,而不是本地:
PYTHONPATH=/var/www/api/current /var/www/api/current/venv/bin/python /var/www/api/current/venv/bin/uvicorn main:app --reload --port=8004
我听不懂
最佳答案
感谢 Chris 的评论,我通过在读取文件内容之前添加 .seek()
方法解决了我的问题。
@app.post("/csv/file/preview")
def post_csv_file_preview(file: UploadFile):
"""
:param file:
:return:
"""
file.file.seek(0)
contents = file.file.read()
print(contents)
关于file-upload - 将小文件上传到 FastAPI 端点,但上传文件内容为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73632237/