Spring Boot,Jetty:分段上传 - 让 Spring/Jetty 接受缺少 "filename" 属性的 body 部分?
Spring Boot, Jetty: Multipart upload - make Spring/Jetty accept body parts with missing "filename" attribute?
如何制作 Spring(或 Jetty)accept/parse 分段上传,其中 body 部分缺少 filename
属性 Content-Disposition?
除缺少 filename
属性外,Multipart 消息是可以的,它也曾用于旧版本的 Jetty/Spring。
我需要设置什么才能使 Jetty/Spring 再次容错一些?
P.S。
在这里我发现了一个类似但不同的问题(name
属性缺失)。然而,虽然 name
似乎是识别 body 部分的重要属性,但您不一定需要原始 client-side 文件名:
如评论中所述:
Spring (4.3.8.RELEASE) 无条件跳过没有文件名的多部分文件,即没有设置使其更容错。因此,唯一的解决方案是覆盖 Spring 的 StandardMultipartHttpServletRequest
class 并修改有问题的方法:parseRequest
.
添加的代码行:
if (filename == null && "file".equalsIgnoreCase(part.getName()) && MediaType.APPLICATION_OCTET_STREAM.equalsIgnoreCase(part.getContentType())) {
filename = DEFAULT_FILENAME;
}
是的,多部分正文部分的名称不一定必须是 "file",但这是我的代码必须使用的客户端应用程序在上传文件时使用的名称。
如何制作 Spring(或 Jetty)accept/parse 分段上传,其中 body 部分缺少 filename
属性 Content-Disposition?
除缺少 filename
属性外,Multipart 消息是可以的,它也曾用于旧版本的 Jetty/Spring。
我需要设置什么才能使 Jetty/Spring 再次容错一些?
P.S。
在这里我发现了一个类似但不同的问题(name
属性缺失)。然而,虽然 name
似乎是识别 body 部分的重要属性,但您不一定需要原始 client-side 文件名:
如评论中所述:
Spring (4.3.8.RELEASE) 无条件跳过没有文件名的多部分文件,即没有设置使其更容错。因此,唯一的解决方案是覆盖 Spring 的 StandardMultipartHttpServletRequest
class 并修改有问题的方法:parseRequest
.
添加的代码行:
if (filename == null && "file".equalsIgnoreCase(part.getName()) && MediaType.APPLICATION_OCTET_STREAM.equalsIgnoreCase(part.getContentType())) {
filename = DEFAULT_FILENAME;
}
是的,多部分正文部分的名称不一定必须是 "file",但这是我的代码必须使用的客户端应用程序在上传文件时使用的名称。