【发布时间】:2021-09-24 12:09:14
【问题描述】:
我正在尝试通过 Python 脚本中的 POST REST API 调用(Spring boot)上传文件,因为我想自动化一些批处理作业。 但是出现错误“无法将类型 'java.lang.String' 的值转换为属性 'file' 所需的类型 'org.springframework.web.multipart.MultipartFile':找不到匹配的编辑器或转换策略]..
python 代码:
import requests
from requests.auth import HTTPBasicAuth
import json
from pathlib import Path
headers={'Accept': 'application/json, text/plain, */*',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-US,en;q=0.9',
'Authorization': 'Bearer XXXX',
'Connection': 'keep-alive',
'Content-Type': 'multipart/form-data'}
fp = 'C:/inputs/inputfile.txt'
files = {'file': open(fp, 'rb')}
payload = {
'integrator': 1,
'version': 2,
'file': files
}
resp = requests.post("http://localhost:8080/api/v1/upload/text", params=payload, headers=headers , files=files)
print (resp.text)
print ("status code " + str(resp.status_code))
我的 API 代码库(Java Springboot REST API):
@PostMapping(value = "/upload/text", consumes = MediaTypes.MULTIPART_FORM_DATA)
public List<String> uploadText(
// @formatter:off
@ModelAttribute
TextUploadModel uploadModel,
Principal principal
// @formatter:on
) throws Exception {
String userName = principal.getName();
return service.uploadTextFile(uploadModel, userName);
}
TextUploadModel.java 是一个带有字符串集成器、字符串版本和 MultipartFile 文件的 POJO。 我发现了类似的 SOF 帖子unanswered
【问题讨论】:
-
你试过
application/x-www-form-urlencoded而不是multipart/form-data吗?
标签: java python-3.x spring-boot python-requests