Skip to content

Description of spring-boot-starter-websocket does not make it clear that it's Servlet-specific #32493

@jimjaeger

Description

@jimjaeger

Simple multipart/form-data file upload rejects with Content type 'application/octet-stream' not supported for a file part with application/octet-stream when websocket dependency is configured.

I tried the example described here https://vinsguru.medium.com/spring-webflux-file-upload-f6e3f3d3f5e1
with the latest spring 2.7.4 from spring boot starter. It worked. After I added the following dependency it breaks:

	<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-websocket</artifactId>
		</dependency>

Sample Upload Controller method:

    @PostMapping(path = "file/single", consumes = {"multipart/form-data"})
    public Mono<Void> upload(@RequestPart("user-name") String name, @RequestPart("fileToUpload") Mono<FilePart> filePartMono) {
        System.out.println("user : " + name);
        return filePartMono
                .doOnNext(fp -> System.out.println("Received File : " + fp.filename()))
                .flatMap(fp -> fp.transferTo(basePath.resolve(fp.filename())))
                .then();
    }

Sample Upload form:

   <form class="mt-3" action="upload/file/single" method="post" enctype="multipart/form-data">
           <div class="form-group">
               <label>User</label>
               <input type="text" name="user-name"> <br /><br />
               <label>Single</label>
               <input type="file" name="fileToUpload" id="fileToUpload1">
           </div>
           <div class="form-group mt-3">
               <button type="submit" class="btn btn-primary">Submit</button>
           </div>
       </form>
There was an unexpected error (type=Unsupported Media Type, status=415).
Content type 'application/octet-stream' not supported
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/octet-stream' not supported
	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:211)
	at org.springframework.web.servlet.mvc.method.annotation.RequestPartMethodArgumentResolver.resolveArgument(RequestPartMethodArgumentResolver.java:140)
	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)
	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions