我有一个带有端点的应用程序和一个运行它的tomcat服务器。我可以用一个文件在postman上点击一个端点,并将其上传到服务器上的excel文件中。
问题是为了让它工作,我必须在tomcat的context.xml中添加allowcasualmultipartparsing=“true”,我不想在本地tomcat上添加这个补丁。
我需要一个修复,将工作,尽管tomcat服务器上运行。因此,如果有人要添加一个新的tomcat,他们就不会有这个问题。例如在tomcat 9.0.6上
很难证明这个问题,因为这是由于在一个独立的tomcat上运行应用程序造成的。当我在没有独立的tomcat9.0.38的情况下运行它时,它就可以工作了。
上传文件代码
@Controller
@RequestMapping("/ListCtrl")
public class listController {
@RequestMapping(method = {RequestMethod.POST}, value = "/list")
@Consumes (MediaType.MULTIPART_FORM_DATA)
@Produces (MediaType.TEXT_XML)
@ResponseBody public Map<String, Object> uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") MultipartFile file,
@RequestParam("listName") String listName,
@RequestParam Integer
listid){
Map<String, Object> resultMap = null;
resultMap = new HashMap<>();
resultMap.put("status", "successful");
resultMap.put("file", file.getName());
System.out.println(file.getOriginalFilename());
return resultMap;
}
我在无法工作的项目上遇到的错误是http状态500—无法解析多部分servlet请求;嵌套的异常是java。lang.illegalstateexception:无法处理部件,因为未提供多部件配置
2条答案
按热度按时间izkcnapc1#
如果你提供一个配置就足够了。正如spring文档中提到的,spring中包含两个具体的实现。
用于apache commons文件上载和
Servlet3.0+部分api的standardservletmultipartresolver
为了更好的灵活性和可配置性,我选择使用commonmultipartresolver。它的优点之一是提供了maxuploadsize、maxinmemorysize和defaultencoding设置作为bean属性。但是,您必须将其导入为:
在你的代码里:
wnavrhmk2#
我找到了解决办法。我以前见过,但不完全明白,所以我想在这里详细说明,以防其他人看到它。尽管tomcat正在运行,但这个解决方案仍然有效。您需要创建一个meta inf文件夹。对我来说,我在一个已部署的资源文件夹下创建了一个context.xml。在我将allowcasualmultipartparsing=“true”放入上下文标记之后。webapp/deployed resources/meta-inf/context.xml。
spark java:无法处理部件,因为没有提供多部件配置