
Spring boot的嵌入式Tomcat默认为Servlet 3.x多部分支持。GraphQL Java
servlet支持公用FileUpload。为了使工作正常,您必须禁用Spring boots默认的multipart配置,例如:
在pom.xml中为commons-fileupload添加Maven依赖项
<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency>
Application.yml
spring: servlet: multipart: enabled: false
Spring Boot应用程序类
@EnableAutoConfiguration(exclude={MultipartAutoConfiguration.class})然后在您的@Configuration中添加一个@Bean
@Bean(name = "multipartResolver")public CommonsMultipartResolver multipartResolver() { CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(); multipartResolver.setMaxUploadSize(100000); return multipartResolver;}现在,您可以在GraphQL上下文中找到上载的多部分文件,因为它们会自动映射到:
environment -> context -> files
可从 DataFetchingEnvironment访问
突变的实现示例:
@Componentpublic class Mutation implements GraphQLMutationResolver { @Autowired private TokenService tokenService; @Autowired private UserRepository userRepository; @Autowired private UserService userService; @Autowired private ProjectRepository repository; @Autowired @Qualifier( value = "modeshape" ) private StorageService storageService; @GraphQLField @GraphQLRelayMutation public ProjectItem createProject( CreateProjectInput input, DataFetchingEnvironment environment ) { Project project = new Project( input.getName() ); project.setDescription( input.getDescription() ); GraphQLContext context = environment.getContext(); Optional<Map<String, List<FileItem>>> files = context.getFiles(); files.ifPresent( keys -> { List<FileItem> file = keys.get( "file" ); List<StorageService.FileInfo> storedFiles = file.stream().map( f -> storageService.store( f, "files", true ) ).collect( Collectors.toList() ); project.setFile( storedFiles.get( 0 ).getUuid() ); } ); repository.save( project ); return new ProjectItem( project ); }class CreateProjectInput { private String name; private String description; private String clientMutationId; @GraphQLField public String getName() { return name; } public String getDescription() { return description; } public void setDescription( String description ) { this.description = description; } @GraphQLField public String getClientMutationId() { return clientMutationId; }}欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)