gradle - POST 方法上的外部 tomcat 上的 Spring Boot REST 框架无法处理图像。返回 404 错误

标签 gradle spring-boot tomcat7 tomcat8

我正在使用以下环境。
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/

相关文章:

java - Spring配置服务器找不到纯文本文件

tomcat7 - 无法调用 Tomcat 管理器 : Broken pipe

Android Studio 引用库

java - 如何通过DataSourceBuilder将jasypt加密密码传递给数据库

gradle - Gradle禁用特定任务的自动子项目执行

java - 无法在 OncePerRequestFilter 中注入(inject) bean

java - Netbeans项目无法添加服务器

java - Tomcat服务器404

React-Native:无法解析配置 ':app:debugCompileClasspath'的所有依赖项

android - 无法安装约束布局:1.0.2