【发布时间】:2019-12-06 01:34:38
【问题描述】:
我正在关注这个answer 来实现graphql 文件上传。
compile group: 'commons-fileupload', name: 'commons-fileupload', version: '1.4'
Application.yml
spring.servlet.multipart.enabled=true
Spring Boot 应用类
@EnableAutoConfiguration(exclude={MultipartAutoConfiguration.class})
然后在你的@Configuration 中添加一个@Bean
@Bean(name = "multipartResolver")
public CommonsMultipartResolver multipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(100000);
return multipartResolver;
}
但我不断得到
Content type 'multipart/form-data;boundary=----WebKitFormBoundarygiGMuLecC2onH3UB' not supported
痕迹是
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'multipart/form-data;boundary=----WebKitFormBoundary36cu0FWBPBeUPgsH' not supported↵ at org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.handleNoMatch(RequestMappingInfoHandlerMapping.java:214)↵ at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:419)↵ at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:365)↵ at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:65)↵ at org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMapping.java:401)↵ at org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:1232)↵ at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1015)↵ at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)↵ at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)↵ at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908)↵ at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)↵ at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)↵ at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)↵ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)↵ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)↵ at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)↵ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)↵ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)↵ at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:90)↵ at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)↵ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)↵ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)↵ at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96)↵ at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)↵ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)↵ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)↵ at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)↵ at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)↵ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)↵ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)↵ at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)↵ at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)↵ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)↵ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)↵ at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)↵ at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)↵ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)↵ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)↵ at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:117)↵ at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:106)↵ at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)↵ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)↵ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)↵ at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)↵ at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)↵ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)↵ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)↵ at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)↵ at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)↵ at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)↵ at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)↵ at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)↵ at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)↵ at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)↵ at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)↵ at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)↵ at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:836)↵ at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1747)↵ at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)↵ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)↵ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)↵ at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)↵ at java.lang.Thread.run(Thread.java:748)↵
我正在做的前端
import {useDropzone} from 'react-dropzone'
const DragDrop = ({mutate}: { mutate: any }) => {
const onDrop = useCallback((acceptedFiles: any) => {
console.log(acceptedFiles)
// Do something with the files
mutate({variables: {file: acceptedFiles[0]}})
}, []);
const {getRootProps, getInputProps, isDragActive} = useDropzone({onDrop});
return (
<div {...getRootProps()}>
<input {...getInputProps()} />
{
isDragActive ?
<p>Drop the files here ...</p> :
<p>Drag 'n' drop some files here, or click to select files</p>
}
</div>
)
};
const UploadFiles = () => {
return (
<Mutation mutation={gql` mutation($file: Upload!) { uploadFile(file: $file) } `}>
{(mutate: any) => { return (<DragDrop mutate={mutate}/>); }}
</Mutation>
);
};
【问题讨论】:
标签: java spring-boot graphql graphql-java