我试图通过POST REST API调用(Spring Boot)从python脚本上传文件,因为想要自动化一些批处理工作。但是得到错误"无法将类型'java.lang.字符串'的值转换为属性'文件'所需的类型'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);
}
文本上传模型。java是一个具有字符串集成器、字符串版本和多部分文件的POJO。我发现类似的SOF帖子没有得到回复
问题可能与有效载荷
字典的定义有关,您在那里包含文件
参数,这很可能导致Spring将该参数视为字符串
,因为参数
中包含的每个参数都附加到请求
的查询字符串中。
请从有效负载中删除file
密钥:
payload = {
'integrator': 1,
'version': 2
}
文件上传信息在文件
参数中提供:请求
将负责将每个参数类型放置在正确的位置,设置内容类型
,并建立适当的多部分边界。
请考虑阅读这个相关的问题,它对如何处理<代码>请求< /代码>多文件上传提供了很好的建议。
问题内容: 我想编写一个脚本将文件上传到FTP。 登录系统将如何工作?我正在寻找这样的东西: 以及任何其他登录凭据。 问题答案: 使用,您可以这样编写: 如果FTP主机需要TLS,请改用。 要检索它,可以使用: 编辑 : 要查找当前目录,请使用: FTP.pwd():返回服务器上当前目录的路径名。 要更改目录,请使用: FTP.cwd(pathname):设置服务器上的当前目录。
问题内容: 我制作了一个脚本,该脚本使用$ .ajax和FormData将两个表单对象传递给PHP。一个表单对象是文本,另一个是文件。它作为独立脚本运行良好。但是,将其作为插件添加到Wordpress后,它一直给我。 我不能序列化formdata,仅仅是因为那样我将无法将文件传递给PHP中的回调函数。 ajax调用之前涉及FormData的JS: 上面的这一部分是100%正确的。 Ajax呼叫:
问题内容: 选择图像,doc或pdf后,我想将它们通过okhttp3。如何进行此操作? 并在okhttp 3中 显示的错误是 谢谢。 问题答案: 所以我自己回答这个问题。 因此,我首先将输出流打开到一个临时文件。 扩展名取决于mime类型。您可以通过以下方式找到mime类型 现在从文件读取并将其内容写入临时文件 现在写入文件 最后 成功之后的最后
问题内容: 我使用2个文件index.js,upload.php尝试通过ajax上传文件(img),如果成功追加到div 。 但是它不起作用,有几个问题,下面我的代码有什么建议吗? 谢谢。 upload.php 1. 还需要添加吗? 2. 并检查$ _FILES的大小或tmp_name是否仍使用? index.js 3.这几行是对的吗? 4.我错过或错了什么吗? 问题答案: 在其构造函数中接受一个
本文向大家介绍通过Ajax使用FormData对象无刷新上传文件方法,包括了通过Ajax使用FormData对象无刷新上传文件方法的使用技巧和注意事项,需要的朋友参考一下 写在前面:本文说的这个方案有浏览器兼容性问题;所有主流浏览器的较新版本已经支持这个对象了,比如Chrome 7+、Firefox 4+、IE 10+、Opera 12+、Safari 5+,对兼容性比较敏感的网站慎用。 在工作中
问题内容: 我想使用将文件(特别是图像)上传到REST Server 。我已经导入/添加了构建路径和。而且我在堆栈跟踪中收到以下错误。 这有效吗? HTTP POST代码 堆栈跟踪 问题答案: 您似乎缺少依赖项。 我有,,并用和在我的类路径罐子。 我也使用而不是使用header属性。 查看Internet媒体类型以了解更多详细信息