如何获取 MultipartFile 的 headers?
How to get headers of MultipartFile?
使用 spring MVC 我以这种方式在控制器中接收多部分文件
@RestController
public class FilesController {
@PostMapping(path = ("/files"), consumes = {"multipart/form-data", "multipart/mixed"})
public Reference createFile(
@RequestPart(value = "description") FileDescription fileDesc,
@RequestPart(value = "attachments", required = false) List<MultipartFile> attachments) {
多部分请求的某些部分可能包含 header,如“Content-ID”、“Content-Location”等。但是 spring 接口 MultipartFile 没有提供一种方法来获取我想要的任何 header ,只有我看到的 getContentType 。我如何获得所有提供的 headers?
重要的一点是,根据请求,我可以将 multipart/mixed 作为 multipart/form-data 的一部分。所以消息的每个部分都有自己的 headers 映射。如果我使用@RequestHeader,我可以看到请求的main headers,但是没有multipart.
的特定部分的headers
您可以使用此
获取所有请求header
@RequestHeader Map<String,String> headers
之后,您可以搜索header您要找的
您可以使用 @RequestHeader
注释从请求中检索所有 header,如下所示:
@RestController
public class FilesController {
@PostMapping(path = ("/files"), consumes = {"multipart/form-data", "multipart/mixed"})
public Reference createFile(
@RequestHeader Map<String, String> headersMap
) {
// Use headersMap here
}
或者如果您想要单个 header 的值,那么您可以在 @RequestHeader
注释中指定 header 的名称,如下所示:
@RestController
public class FilesController {
@PostMapping(path = ("/files"), consumes = {"multipart/form-data", "multipart/mixed"})
public Reference createFile(
@RequestHeader("Content-ID") String contentId,
@RequestHeader("Content-Location") String contentLocation,
) {
// Use contentId, contentLocation here
}
可能还有另一种方法,但我知道的方法是在您的方法签名中要求 MultipartHttpServletRequest。
@PostMapping(path = ("/files"), consumes = {"multipart/form-data", "multipart/mixed"})
public Reference createFile(MultipartHttpServletRequest multipartRequest)
如果需要,您可以要求其他参数。
此 object 允许您以 finer-grained 方式访问多部分的详细信息。例如,您可以使用 getMultipartHeaders(String paramOrFileName) 访问每个部分的 header。您还可以通过这种方式访问文件内容的方法,因此您通常不需要将 @RequestPart
保留在方法签名中。
我们也可以使用javax.servlet.http.Part代替MultipartFile。接口部分有getHeader方法。
@RequestPart(value = "attachments", required = false) List<Part> attachments
使用 spring MVC 我以这种方式在控制器中接收多部分文件
@RestController
public class FilesController {
@PostMapping(path = ("/files"), consumes = {"multipart/form-data", "multipart/mixed"})
public Reference createFile(
@RequestPart(value = "description") FileDescription fileDesc,
@RequestPart(value = "attachments", required = false) List<MultipartFile> attachments) {
多部分请求的某些部分可能包含 header,如“Content-ID”、“Content-Location”等。但是 spring 接口 MultipartFile 没有提供一种方法来获取我想要的任何 header ,只有我看到的 getContentType 。我如何获得所有提供的 headers?
重要的一点是,根据请求,我可以将 multipart/mixed 作为 multipart/form-data 的一部分。所以消息的每个部分都有自己的 headers 映射。如果我使用@RequestHeader,我可以看到请求的main headers,但是没有multipart.
的特定部分的headers您可以使用此
获取所有请求header@RequestHeader Map<String,String> headers
之后,您可以搜索header您要找的
您可以使用 @RequestHeader
注释从请求中检索所有 header,如下所示:
@RestController
public class FilesController {
@PostMapping(path = ("/files"), consumes = {"multipart/form-data", "multipart/mixed"})
public Reference createFile(
@RequestHeader Map<String, String> headersMap
) {
// Use headersMap here
}
或者如果您想要单个 header 的值,那么您可以在 @RequestHeader
注释中指定 header 的名称,如下所示:
@RestController
public class FilesController {
@PostMapping(path = ("/files"), consumes = {"multipart/form-data", "multipart/mixed"})
public Reference createFile(
@RequestHeader("Content-ID") String contentId,
@RequestHeader("Content-Location") String contentLocation,
) {
// Use contentId, contentLocation here
}
可能还有另一种方法,但我知道的方法是在您的方法签名中要求 MultipartHttpServletRequest。
@PostMapping(path = ("/files"), consumes = {"multipart/form-data", "multipart/mixed"})
public Reference createFile(MultipartHttpServletRequest multipartRequest)
如果需要,您可以要求其他参数。
此 object 允许您以 finer-grained 方式访问多部分的详细信息。例如,您可以使用 getMultipartHeaders(String paramOrFileName) 访问每个部分的 header。您还可以通过这种方式访问文件内容的方法,因此您通常不需要将 @RequestPart
保留在方法签名中。
我们也可以使用javax.servlet.http.Part代替MultipartFile。接口部分有getHeader方法。
@RequestPart(value = "attachments", required = false) List<Part> attachments