2017-01-22 47 views
0

我是很新的春天開機,我試圖將文件上傳我得到這個錯誤:春季啓動文件上傳不工作

> Whitelabel Error Page 
> 
> This application has no explicit mapping for /error, so you are seeing 
> this as a fallback. 
> 
>  Sun Jan 22 21:05:28 MSK 2017 
>  There was an unexpected error (type=Not Found, status=404). 
>  No message available 

這是我的Application.java文件:

package com.theligue.webservice; 

import org.springframework.boot.CommandLineRunner; 
import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.boot.context.properties.EnableConfigurationProperties; 
import org.springframework.context.annotation.Bean; 

import com.theligue.webservice.storage.StorageProperties; 
import com.theligue.webservice.storage.StorageService; 



@SpringBootApplication 
@EnableConfigurationProperties(StorageProperties.class) 
public class Application { 

    public static void main(String[] args) { 
     System.out.println("00000000000000000000000000000000000000000000"); 
     SpringApplication.run(Application.class, args); 
     System.out.println("11111111111111111111111111111111111111"); 
    } 

    @Bean 
    CommandLineRunner init(StorageService storageService) { 
     System.out.println("222222222222222222222222222222222222222222222222"); 
     return (args) -> { 
      storageService.deleteAll(); 
      storageService.init(); 
     }; 
    } 
} 

,這是文件上傳控制器文件:

package com.theligue.webservice; 
    import org.springframework.beans.factory.annotation.Autowired; 
    import org.springframework.core.io.Resource; 
    import org.springframework.http.HttpHeaders; 
    import org.springframework.http.ResponseEntity; 
    import org.springframework.stereotype.Controller; 
    import org.springframework.ui.Model; 
    import org.springframework.web.bind.annotation.*; 
    import org.springframework.web.multipart.MultipartFile; 
    import org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder; 
    import org.springframework.web.servlet.mvc.support.RedirectAttributes; 

    import com.theligue.webservice.storage.StorageFileNotFoundException; 
    import com.theligue.webservice.storage.StorageService; 


    import java.io.IOException; 
    import java.util.stream.Collectors; 

    @Controller 
    @RequestMapping("/api") 
    public class FileUploadController { 
     private final StorageService storageService; 

     @Autowired 
     public FileUploadController(StorageService storageService) { 
      System.out.println("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); 
      this.storageService = storageService; 
     } 

     @GetMapping("/") 
     public String listUploadedFiles(Model model) throws IOException { 
      System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); 

      model.addAttribute("files", storageService 
        .loadAll() 
        .map(path -> 
          MvcUriComponentsBuilder 
            .fromMethodName(FileUploadController.class, "serveFile", path.getFileName().toString()) 
            .build().toString()) 
        .collect(Collectors.toList())); 
      System.out.println("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); 
      return "uploadForm"; 
     } 

     @GetMapping("/files/{filename:.+}") 
     @ResponseBody 
     public ResponseEntity<Resource> serveFile(@PathVariable String filename) { 

      Resource file = storageService.loadAsResource(filename); 
      return ResponseEntity 
        .ok() 
        .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\""+file.getFilename()+"\"") 
        .body(file); 
     } 

     @PostMapping("/") 
     public String handleFileUpload(@RequestParam("file") MultipartFile file, 
             RedirectAttributes redirectAttributes) { 

      storageService.store(file); 
      redirectAttributes.addFlashAttribute("message", 
        "You successfully uploaded " + file.getOriginalFilename() + "!"); 

      return "redirect:/"; 
     } 

     @ExceptionHandler(StorageFileNotFoundException.class) 
     public ResponseEntity handleStorageFileNotFound(StorageFileNotFoundException exc) { 
      return ResponseEntity.notFound().build(); 
     } 


    } 

這是騙子唯一的輸出時,我打本地主機:8080/

00000000000000000000000000000000000000000000 
00000000000000000000000000000000000000000000 

    . ____   _   __ _ _ 
/\\/___'_ __ _ _(_)_ __ __ _ \ \ \ \ 
(()\___ | '_ | '_| | '_ \/ _` | \ \ \ \ 
\\/ ___)| |_)| | | | | || (_| | )))) 
    ' |____| .__|_| |_|_| |_\__, |//// 
=========|_|==============|___/=/_/_/_/ 
:: Spring Boot ::  (v1.4.3.RELEASE) 

2017-01-22 21:05:08.319 INFO 1572 --- [ restartedMain] com.theligue.webservice.Application  : Starting Application on DESKTOP-M1QNJT9 with PID 1572 (started by Mohammad Taha in C:\Users\Mohammad Taha\workspace\theLigue\LigueWebServices) 
2017-01-22 21:05:08.322 INFO 1572 --- [ restartedMain] com.theligue.webservice.Application  : No active profile set, falling back to default profiles: default 
2017-01-22 21:05:08.637 INFO 1572 --- [ restartedMain] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot[email protected]1c13f3d5: startup date [Sun Jan 22 21:05:08 MSK 2017]; root of context hierarchy 
2017-01-22 21:05:11.743 INFO 1572 --- [ restartedMain] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http) 
2017-01-22 21:05:11.760 INFO 1572 --- [ restartedMain] o.apache.catalina.core.StandardService : Starting service Tomcat 
2017-01-22 21:05:11.763 INFO 1572 --- [ restartedMain] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.6 
2017-01-22 21:05:11.949 INFO 1572 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]  : Initializing Spring embedded WebApplicationContext 
2017-01-22 21:05:11.949 INFO 1572 --- [ost-startStop-1] o.s.web.context.ContextLoader   : Root WebApplicationContext: initialization completed in 3315 ms 
2017-01-22 21:05:12.198 INFO 1572 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/] 
2017-01-22 21:05:12.202 INFO 1572 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*] 
2017-01-22 21:05:12.203 INFO 1572 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*] 
2017-01-22 21:05:12.203 INFO 1572 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*] 
2017-01-22 21:05:12.203 INFO 1572 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*] 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
2017-01-22 21:05:12.317 WARN 1572 --- [ restartedMain] f.a.AutowiredAnnotationBeanPostProcessor : Autowired annotation should only be used on methods with parameters: public java.util.Collection com.theligue.webservice.service.PlayerService.getFakeDataObject() 
222222222222222222222222222222222222222222222222 
2017-01-22 21:05:12.950 INFO 1572 --- [ restartedMain] org.mongodb.driver.cluster    : Cluster created with settings {hosts=[localhost:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500} 
2017-01-22 21:05:13.013 INFO 1572 --- [localhost:27017] org.mongodb.driver.connection   : Opened connection [connectionId{localValue:1, serverValue:4}] to localhost:27017 
2017-01-22 21:05:13.015 INFO 1572 --- [localhost:27017] org.mongodb.driver.cluster    : Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[3, 4, 1]}, minWireVersion=0, maxWireVersion=5, maxDocumentSize=16777216, roundTripTimeNanos=568071} 
2017-01-22 21:05:13.334 INFO 1572 --- [ restartedMain] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot[email protected]1c13f3d5: startup date [Sun Jan 22 21:05:08 MSK 2017]; root of context hierarchy 
2017-01-22 21:05:13.554 INFO 1572 --- [ restartedMain] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/],methods=[GET]}" onto public java.lang.String com.theligue.webservice.FileUploadController.listUploadedFiles(org.springframework.ui.Model) throws java.io.IOException 
2017-01-22 21:05:13.555 INFO 1572 --- [ restartedMain] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/files/{filename:.+}],methods=[GET]}" onto public org.springframework.http.ResponseEntity<org.springframework.core.io.Resource> com.theligue.webservice.FileUploadController.serveFile(java.lang.String) 
2017-01-22 21:05:13.556 INFO 1572 --- [ restartedMain] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/],methods=[POST]}" onto public java.lang.String com.theligue.webservice.FileUploadController.handleFileUpload(org.springframework.web.multipart.MultipartFile,org.springframework.web.servlet.mvc.support.RedirectAttributes) 
2017-01-22 21:05:13.559 INFO 1572 --- [ restartedMain] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) 
2017-01-22 21:05:13.560 INFO 1572 --- [ restartedMain] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) 
2017-01-22 21:05:13.605 INFO 1572 --- [ restartedMain] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 
2017-01-22 21:05:13.605 INFO 1572 --- [ restartedMain] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 
2017-01-22 21:05:13.655 INFO 1572 --- [ restartedMain] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 
2017-01-22 21:05:14.328 INFO 1572 --- [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer  : LiveReload server is running on port 35729 
2017-01-22 21:05:14.408 INFO 1572 --- [ restartedMain] o.s.j.e.a.AnnotationMBeanExporter  : Registering beans for JMX exposure on startup 
2017-01-22 21:05:14.489 INFO 1572 --- [ restartedMain] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) 
2017-01-22 21:05:14.498 INFO 1572 --- [ restartedMain] com.theligue.webservice.Application  : Started Application in 6.679 seconds (JVM running for 7.413) 
11111111111111111111111111111111111111 
2017-01-22 21:05:28.908 INFO 1572 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]  : Initializing Spring FrameworkServlet 'dispatcherServlet' 
2017-01-22 21:05:28.908 INFO 1572 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet  : FrameworkServlet 'dispatcherServlet': initialization started 
2017-01-22 21:05:28.930 INFO 1572 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet 

我注意到它劑量不會去listUpdatedFiles功能文件上傳控制器內。

回答

1

你有

@RequestMapping("/api") 
public class FileUploadController { 

這意味着你的請求將與/api

開始到達listUploadedFiles方法,你需要打localhost:8080/api/