【发布时间】:2020-11-12 20:36:55
【问题描述】:
我正在使用fastapi按照官方文档上传文件,就像:
@app.post("/create_file/")
async def create_file(file: UploadFile=File(...)):
file2store = await file.read()
# some code to store the BytesIO(file2store) to the other database
当我使用 python requests lib 发送请求时:
f = open(".../file.txt", 'rb')
files = {"file": (f.name, f, "multipart/form-data")}
requests.post(url="SERVER_URL/create_file", files=files)
file2store 始终为空。有时(很少见),它可以获取文件字节,但几乎所有时间它都是空的,所以我无法恢复其他数据库上的文件。 我也尝试了“字节”而不是“上传文件”,我得到了相同的结果。 我的代码是否有问题,或者我使用fastapi上传文件的方式错误?我谷歌了很长时间的一些答案,但失败了。所以我在这里提出这个问题,希望知道答案的人可以帮助我。谢谢
【问题讨论】:
-
您是否安装了
python-multipart?如果不是pip install python-multipart -
是的,我已经安装了。有时我可以上传成功,但这种情况很少发生。
-
是否发生在特定的文件类型上?
-
我试过 docx, txt, yaml, png 文件,它们都有同样的问题。而且我刚发现第一次上传新文件的时候可以上传成功,但是第二次(或者更多次)上传就失败了。
-
我知道原因。谢谢你启发我。我只使用了一次
f = open(file)方法,当我多次发送请求时,第一次之后f会被关闭。再次感谢您帮助我。
标签: python file-upload fastapi