我的应用在前端使用React,在后端使用FastAPI。
我正在尝试上传一个CSV文件到我的服务器。
在提交表单时,这被称为:
const onSubmit = async (e) => {
e.preventDefault();
const formData = new FormData();
formData.append("file", file);
fetch("/api/textitems/upload", {
method: "POST",
body: formData,
});
};
字符串
数据接收方:
@app.post('/api/textitems/upload')
def upload_file(csv_file: UploadFile = File(...)):
dataframe = pd.read_csv(csv_file.file)
return dataframe.head()
型INFO: 127.0.0.1:0 - "POST /api/textitems/upload HTTP/1.1" 422 Unprocessable Entity
错误
我能够成功地执行与curl的post请求如下:curl -X POST "http://localhost:8000/api/textitems/upload" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F "csv_file=@exp_prod.csv;type=text/csv"
个
有什么建议可以告诉我在使用JavaScript的时候哪里出错了吗?
4条答案
按热度按时间csga3l581#
我最终解决了这个问题。Isabi的回答帮助了我,学习FormData's append method也是如此。这里是工作代码片段,如果有人发现它们有用的话。
o8x7eapl2#
确保表单中的文件名与参数中的文件名匹配!
请看下面我对同一问题的回答。
如何使用Postman将文件发送到FastAPI端点
xzv2uavs3#
@henry-dashwood的回答对我来说很有效,但我不得不修改一下,让它在SvelteKit中工作:
字符串
egdjgwm84#
根据您的请求将Content-Type头设置为
multipart/form-data
:字符串