gpt4 book ai didi

java - spring boot 文件上传不起作用

转载 作者:行者123 更新时间:2023-12-01 08:59:34 24 4
gpt4 key购买 nike

我对 Spring Boot 很陌生,我正在尝试上传文件,但出现此错误:

> 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();
};
}
}

这是文件 uploader Controller 文件:

    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();
}


}

this is the console output when i hit localhost: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.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@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.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@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

我注意到它没有转到文件上传 Controller 内的 listUpdatedFiles 函数。

最佳答案

你有

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

这意味着您的请求将以 /api 开头

要访问 listUploadedFiles 方法,您需要点击 localhost:8080/api/

关于java - spring boot 文件上传不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41794485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com