spring boot addResourceHandler not working using service





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















I wanted to upload dynamic images and serve them using <img> tag, so I followed this solution:
Spring Boot images uploading and serving



Absolute path of project: /home/vkumar/apps/contest



Absolute path of upload dir: /home/vkumar/apps/contest/uploads



ResourceConfig.java



public class ResourceConfig implements WebMvcConfigurer {

@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/uploads/**").addResourceLocations("file:uploads/");
}
}


Then I uploaded a file in uploads dir test.jpg



Now If I go to the server and run the app using the command




mvn spring-boot:run




and open image http://example.com:8080/uploads/test.jpg



all work fine, I can see an image which been uploaded however If I create jar using the command




mvn clean package




I see the error "This application has no explicit mapping for /error, so you are seeing this as a fallback."










share|improve this question

























  • The fact that you're using a relative path is probably part of the problem.

    – chrylis
    Jan 3 at 8:40











  • Probably the image isn't in the built jar file by maven.

    – Wes
    Jan 3 at 8:42











  • @chrylis - updated question with absolute path. Tried this registry.addResourceHandler("uploads/**").addResourceLocations("/home/vkumar/apps/contest/uploads/")

    – VK321
    Jan 3 at 8:46











  • @Wes - yes files are not in jar as those would be uploaded dynamically.

    – VK321
    Jan 3 at 8:47


















0















I wanted to upload dynamic images and serve them using <img> tag, so I followed this solution:
Spring Boot images uploading and serving



Absolute path of project: /home/vkumar/apps/contest



Absolute path of upload dir: /home/vkumar/apps/contest/uploads



ResourceConfig.java



public class ResourceConfig implements WebMvcConfigurer {

@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/uploads/**").addResourceLocations("file:uploads/");
}
}


Then I uploaded a file in uploads dir test.jpg



Now If I go to the server and run the app using the command




mvn spring-boot:run




and open image http://example.com:8080/uploads/test.jpg



all work fine, I can see an image which been uploaded however If I create jar using the command




mvn clean package




I see the error "This application has no explicit mapping for /error, so you are seeing this as a fallback."










share|improve this question

























  • The fact that you're using a relative path is probably part of the problem.

    – chrylis
    Jan 3 at 8:40











  • Probably the image isn't in the built jar file by maven.

    – Wes
    Jan 3 at 8:42











  • @chrylis - updated question with absolute path. Tried this registry.addResourceHandler("uploads/**").addResourceLocations("/home/vkumar/apps/contest/uploads/")

    – VK321
    Jan 3 at 8:46











  • @Wes - yes files are not in jar as those would be uploaded dynamically.

    – VK321
    Jan 3 at 8:47














0












0








0








I wanted to upload dynamic images and serve them using <img> tag, so I followed this solution:
Spring Boot images uploading and serving



Absolute path of project: /home/vkumar/apps/contest



Absolute path of upload dir: /home/vkumar/apps/contest/uploads



ResourceConfig.java



public class ResourceConfig implements WebMvcConfigurer {

@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/uploads/**").addResourceLocations("file:uploads/");
}
}


Then I uploaded a file in uploads dir test.jpg



Now If I go to the server and run the app using the command




mvn spring-boot:run




and open image http://example.com:8080/uploads/test.jpg



all work fine, I can see an image which been uploaded however If I create jar using the command




mvn clean package




I see the error "This application has no explicit mapping for /error, so you are seeing this as a fallback."










share|improve this question
















I wanted to upload dynamic images and serve them using <img> tag, so I followed this solution:
Spring Boot images uploading and serving



Absolute path of project: /home/vkumar/apps/contest



Absolute path of upload dir: /home/vkumar/apps/contest/uploads



ResourceConfig.java



public class ResourceConfig implements WebMvcConfigurer {

@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/uploads/**").addResourceLocations("file:uploads/");
}
}


Then I uploaded a file in uploads dir test.jpg



Now If I go to the server and run the app using the command




mvn spring-boot:run




and open image http://example.com:8080/uploads/test.jpg



all work fine, I can see an image which been uploaded however If I create jar using the command




mvn clean package




I see the error "This application has no explicit mapping for /error, so you are seeing this as a fallback."







java spring-boot spring-mvc






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 3 at 8:44







VK321

















asked Jan 3 at 8:34









VK321VK321

2,37421628




2,37421628













  • The fact that you're using a relative path is probably part of the problem.

    – chrylis
    Jan 3 at 8:40











  • Probably the image isn't in the built jar file by maven.

    – Wes
    Jan 3 at 8:42











  • @chrylis - updated question with absolute path. Tried this registry.addResourceHandler("uploads/**").addResourceLocations("/home/vkumar/apps/contest/uploads/")

    – VK321
    Jan 3 at 8:46











  • @Wes - yes files are not in jar as those would be uploaded dynamically.

    – VK321
    Jan 3 at 8:47



















  • The fact that you're using a relative path is probably part of the problem.

    – chrylis
    Jan 3 at 8:40











  • Probably the image isn't in the built jar file by maven.

    – Wes
    Jan 3 at 8:42











  • @chrylis - updated question with absolute path. Tried this registry.addResourceHandler("uploads/**").addResourceLocations("/home/vkumar/apps/contest/uploads/")

    – VK321
    Jan 3 at 8:46











  • @Wes - yes files are not in jar as those would be uploaded dynamically.

    – VK321
    Jan 3 at 8:47

















The fact that you're using a relative path is probably part of the problem.

– chrylis
Jan 3 at 8:40





The fact that you're using a relative path is probably part of the problem.

– chrylis
Jan 3 at 8:40













Probably the image isn't in the built jar file by maven.

– Wes
Jan 3 at 8:42





Probably the image isn't in the built jar file by maven.

– Wes
Jan 3 at 8:42













@chrylis - updated question with absolute path. Tried this registry.addResourceHandler("uploads/**").addResourceLocations("/home/vkumar/apps/contest/uploads/")

– VK321
Jan 3 at 8:46





@chrylis - updated question with absolute path. Tried this registry.addResourceHandler("uploads/**").addResourceLocations("/home/vkumar/apps/contest/uploads/")

– VK321
Jan 3 at 8:46













@Wes - yes files are not in jar as those would be uploaded dynamically.

– VK321
Jan 3 at 8:47





@Wes - yes files are not in jar as those would be uploaded dynamically.

– VK321
Jan 3 at 8:47












1 Answer
1






active

oldest

votes


















0














You can create a controller method to load the uploaded files.



You can follow this guide:
https://spring.io/guides/gs/uploading-files/



or this concise example on pastebin.
https://pastebin.com/yDr61Emm



Sample code below:



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

Path path = rootLocation.resolve(filename);
Resource file = null;
try {
file = new UrlResource(path.toUri());
} catch (MalformedURLException ex) {
Logger.getLogger(UploadController.class.getName()).log(Level.SEVERE, null, ex);
}
return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION,
"attachment; filename="" + file.getFilename() + """).body(file);
}





share|improve this answer


























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54018774%2fspring-boot-addresourcehandler-not-working-using-service%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    You can create a controller method to load the uploaded files.



    You can follow this guide:
    https://spring.io/guides/gs/uploading-files/



    or this concise example on pastebin.
    https://pastebin.com/yDr61Emm



    Sample code below:



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

    Path path = rootLocation.resolve(filename);
    Resource file = null;
    try {
    file = new UrlResource(path.toUri());
    } catch (MalformedURLException ex) {
    Logger.getLogger(UploadController.class.getName()).log(Level.SEVERE, null, ex);
    }
    return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION,
    "attachment; filename="" + file.getFilename() + """).body(file);
    }





    share|improve this answer






























      0














      You can create a controller method to load the uploaded files.



      You can follow this guide:
      https://spring.io/guides/gs/uploading-files/



      or this concise example on pastebin.
      https://pastebin.com/yDr61Emm



      Sample code below:



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

      Path path = rootLocation.resolve(filename);
      Resource file = null;
      try {
      file = new UrlResource(path.toUri());
      } catch (MalformedURLException ex) {
      Logger.getLogger(UploadController.class.getName()).log(Level.SEVERE, null, ex);
      }
      return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION,
      "attachment; filename="" + file.getFilename() + """).body(file);
      }





      share|improve this answer




























        0












        0








        0







        You can create a controller method to load the uploaded files.



        You can follow this guide:
        https://spring.io/guides/gs/uploading-files/



        or this concise example on pastebin.
        https://pastebin.com/yDr61Emm



        Sample code below:



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

        Path path = rootLocation.resolve(filename);
        Resource file = null;
        try {
        file = new UrlResource(path.toUri());
        } catch (MalformedURLException ex) {
        Logger.getLogger(UploadController.class.getName()).log(Level.SEVERE, null, ex);
        }
        return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION,
        "attachment; filename="" + file.getFilename() + """).body(file);
        }





        share|improve this answer















        You can create a controller method to load the uploaded files.



        You can follow this guide:
        https://spring.io/guides/gs/uploading-files/



        or this concise example on pastebin.
        https://pastebin.com/yDr61Emm



        Sample code below:



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

        Path path = rootLocation.resolve(filename);
        Resource file = null;
        try {
        file = new UrlResource(path.toUri());
        } catch (MalformedURLException ex) {
        Logger.getLogger(UploadController.class.getName()).log(Level.SEVERE, null, ex);
        }
        return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION,
        "attachment; filename="" + file.getFilename() + """).body(file);
        }






        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Jan 4 at 6:03

























        answered Jan 4 at 4:50









        OlantobiOlantobi

        6141714




        6141714
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54018774%2fspring-boot-addresourcehandler-not-working-using-service%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            MongoDB - Not Authorized To Execute Command

            How to fix TextFormField cause rebuild widget in Flutter

            Npm cannot find a required file even through it is in the searched directory