• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Ładowanie obrazu na serwer oraz wyświetlenie zaraz po załadowaniu [SPRING]

Object Storage Arubacloud
0 głosów
314 wizyt
pytanie zadane 27 kwietnia 2017 w Java przez Szymon Ciamaga Obywatel (1,980 p.)
edycja 27 kwietnia 2017 przez Szymon Ciamaga

Witam tworzę aplikację do uploadu obrazów na serwer, korzystam przy tym z książki Spring MVC 4 projektowanie zaawansowanych aplikacji www i mam dwa problemy, z którymi nie mogę sobie poradzić.

1. Problem z wyświetleniem obrazka anonimowego użytkownika.

2.Drugi problem pojawił się gdy chciałem wyświetlić załadowany obrazek w miejsce "anonimowego użytkownika" dostaje błąd

Attribute value must not be null

i teraz już cała aplikacja się nie uruchamia. Proszę o pomoc bo nie mam pojęcia o co z tym chodzi. Pozdrawiam.

błąd: https://github.com/Baron762/Social/blob/master/Attribute%20value%20must%20not%20be%20null

ps. całość jest na github https://github.com/Baron762/Social

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.Resource;

@ConfigurationProperties(prefix = "upload.pictures")
public class PicturesUploadProperties {

    private Resource uploadPath;
    private Resource anomuousPicture;

    public Resource getAnomuousPicture() {
        return anomuousPicture;
    }

    public void setAnomuousPicture(String anomuousPicture) {
        this.anomuousPicture = new DefaultResourceLoader().getResource(anomuousPicture);
    }

    public Resource getUploadPath() {
        return uploadPath;
    }

    public void setUploadPath(String uploadPath) {
        this.uploadPath = new DefaultResourceLoader().getResource(uploadPath);
    }
}
@SessionAttributes("picturePath")
@Controller
public class PictureUploadController {

    private final Resource picturesDir;
    private final Resource anonymousPicture;

    @ModelAttribute("picturePath")
    public Resource picturePath() {
        return anonymousPicture;
    }

    @Autowired
    public PictureUploadController(PicturesUploadProperties uploadProperties) {
        this.picturesDir = uploadProperties.getUploadPath();
        this.anonymousPicture = uploadProperties.getAnomuousPicture();
    }

    @RequestMapping("/upload")
    public String uploadPage() {
        return "file/uploadPage";
    }

    @RequestMapping(value = "/upload", method = RequestMethod.POST)
    public String onUpload(MultipartFile file, RedirectAttributes redirectAttributes, Model model) throws IOException {
        if (file.isEmpty() || !isImage(file)) {
            redirectAttributes.addFlashAttribute("error", "Nie właściwy plik. Załaduj plik z obrazem");
            return "redirect:/upload";
        }
        Resource picturePath = copyFileToPictures(file);
        model.addAttribute("picturePath", picturePath);
        copyFileToPictures(file);
        return "file/uploadPage";
    }

    private Resource copyFileToPictures(MultipartFile file) throws IOException {
        String fileExtension = getFileExtension(file.getOriginalFilename());
        File tempFile = File.createTempFile("pic", fileExtension, picturesDir.getFile());
        try (InputStream in = file.getInputStream(); OutputStream out = new FileOutputStream(tempFile)) {
            IOUtils.copy(in, out);
        }
        return new FileSystemResource(tempFile);
    }

    @RequestMapping(value = "/uploadedPicture")
    public void getUploadPicture(HttpServletResponse response, @ModelAttribute("picturePath")Path picturePath) throws
            IOException {
        response.setHeader("Content-type", URLConnection.guessContentTypeFromName(anonymousPicture.getFilename()));
    Files.copy(picturePath, response.getOutputStream());
    }

    private boolean isImage(MultipartFile file) {
        return file.getContentType().startsWith("image");
    }

    private static String getFileExtension(String name) {
        return name.substring(name.lastIndexOf("."));
    }
(application.properties)

spring.mvc.locale=pl
upload.pictures.uploadPath=file:./pictures
upload.pictures.anonymousPicture=classpath:/images/anonymous.png

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 722 wizyt
0 głosów
0 odpowiedzi 156 wizyt
0 głosów
2 odpowiedzi 923 wizyt
pytanie zadane 11 grudnia 2018 w Java przez Tomek Reda Obywatel (1,110 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...