我正在使用以下环境。
1.IDE eclipse mars(4.5.2)
2. Gradle
3. Spring Boot(内嵌tomcat)
4. 带有咕噜声的 Angular Js。
问题 :我想在 AWS S3 上上传图像。当我使用带有“spring bootrun”命令的嵌入式tomcat在本地运行并从bowser/Postman API调用上传文件时,图像上传正常。
但是当我通过 gradle war 命令制作 war 文件并在 tomcat 7 或 tomcat 8 中运行它并执行相同的任务时,spring boot 框架的其余 Controller 找不到图像文件。
请帮助我克服这个奇怪的问题。
文件信息:
@RestController
@RequestMapping("/profilePicture")
public class ProfileImageUploadController extends BaseController {
@Autowired
private ImageStoreOnAws imageStoreOnAws;
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public ResponseEntity<Map<String, Object>> getPictureUploadUrl(@AuthenticationPrincipal OttaAccountDetails principal, MultipartHttpServletRequest request) {
Map<String, Object> response = new HashMap<>();
System.err.println("REQUEST---------------->"+request.getContentLength());
System.err.println("\nagain info---------------->"+request.getRequestURI());
MultipartFile multiFile = request.getFile("profile_pic");
System.err.println("Multipart file --------->"+multiFile);
System.err.println("\n Content Type --------->"+request.getContentType());
//String pictureUploadUrl = displayPictureImageStore.uploadUrl("/session/picture/" + principal.getUserId(), 10485760);
response = imageStoreOnAws.uploadProfilePicture(principal.getUserId(), multiFile);
return new ResponseEntity(response, HttpStatus.OK);
}
postman API 调用:http://localhost:8080/profilePicture/upload(它在本地运行良好。但是当我在 tomcat 中运行时它在本地无法运行)
Gradle 文件(部分代码):
apply plugin: 'war'
war {
baseName = 'otta-web'
version = '1.0-SNAPSHOT'
}
version = '1.0-SNAPSHOT'
bootRepackage.enabled = false;
bootRun.enabled = true;
输出:打印给出以下输出。
REQUEST---------------->1818 again info---------------->/profilePicture/upload Multipart file --------->null Content Type --------->multipart/form-data; boundary=--------------------------182405819892384390851841
确切的输出应如下所示:
REQUEST---------------->1818
again info---------------->/profilePicture/upload Multipart file --------->org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile@181b1cf4
Content Type --------->multipart/form-data; boundary=--------------------------341504561441584510876671
最佳答案
您的应用程序类必须扩展 SpringBootServletInitializer 类,您必须覆盖配置方法。请关注 link更多细节
编辑:
如果您进行了所有必要的配置,那么我可以建议的一件事是,确保您为输入文件提供了正确的名称。在这种情况下,它应该是 profile_pic
关于gradle - POST 方法上的外部 tomcat 上的 Spring Boot REST 框架无法处理图像。返回 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41373401/