Commit 33943d4c by Bogdan Andjelkovic

profile picture upload - solved

parent 8ac8ce0c
......@@ -10,6 +10,8 @@ import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
@Controller
public class AppController
{
......@@ -44,15 +46,21 @@ public class AppController
public String postRegisterProccess(@ModelAttribute Korisnik korisnik, @RequestParam("image") MultipartFile multipartFile)
{
System.out.println(korisnik);
kRepo.insert( korisnik, multipartFile);
try {
kRepo.insert( korisnik, multipartFile);
} catch (IOException e) {
throw new RuntimeException(e);
}
return("redirect:/login");
}
@GetMapping("/profile/{korisnikid}")
public String getProfile(@PathVariable("korisnikid") int korisnikid, Model model, @AuthenticationPrincipal KorisnikDetails korisnik)
public String getProfile(@PathVariable("korisnikid") int korisnikid, Model model, @AuthenticationPrincipal KorisnikDetails loggedUser)
{
model.addAttribute("korisnik", kRepo.findById(korisnikid));
model.addAttribute("loggedUser", korisnik);
Korisnik profile = kRepo.findById(korisnikid);
System.out.println( profile.toString());
model.addAttribute("korisnik", profile);
model.addAttribute("loggedUser", loggedUser);
return("profile");
}
}
......@@ -5,12 +5,14 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.IOException;
import java.util.Base64;
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class Korisnik
{
public class Korisnik {
int korisnikId;
String ime;
String prezime;
......@@ -18,7 +20,8 @@ public class Korisnik
String sifra;
String telefon;
int tipId;
String slika;
private String slika;
@Override
public String toString() {
......@@ -30,6 +33,13 @@ public class Korisnik
", sifra='" + sifra + '\'' +
", telefon='" + telefon + '\'' +
", tipId=" + tipId +
", slika=" + slika +
'}';
}
}
/*public String getEncodedPic(){
String slika=null;
slika= Base64.getEncoder().encodeToString(getSlika());
return slika;
*/
}
\ No newline at end of file
package com.example.SkuciSe.repository;
import com.example.SkuciSe.model.korisnik.Korisnik;
import com.example.SkuciSe.util.FileUploadUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
......@@ -10,6 +8,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.sql.*;
import java.util.Base64;
import java.util.Optional;
@Component
......@@ -27,16 +26,12 @@ public class KorisnikRepository
}
}
public void insert( Korisnik korisnik, MultipartFile multipartFile)
public void insert( Korisnik korisnik, MultipartFile multipartFile) throws IOException
{
String fileName = StringUtils.cleanPath(multipartFile.getOriginalFilename());
String uploadDir = "user-photos";
try {
FileUploadUtil.saveFile(uploadDir, fileName, multipartFile);
} catch (IOException e) {
throw new RuntimeException(e);
}
String sql = "insert into korisnik( ime, prezime, telefon, email, sifra, tipId, slika) values('"+korisnik.getIme()+"','"+korisnik.getPrezime()+"','"+korisnik.getTelefon()+"','"+korisnik.getEmail()+"','"+new BCryptPasswordEncoder().encode(korisnik.getSifra())+"',1, '"+fileName+"')";
String slika = Base64.getEncoder().encodeToString(multipartFile.getBytes());
System.out.println( slika);
String sql = "insert into korisnik( ime, prezime, telefon, email, sifra, tipId, slika) values('"+korisnik.getIme()+"','"+korisnik.getPrezime()+"','"+korisnik.getTelefon()+"','"+korisnik.getEmail()+"','"+new BCryptPasswordEncoder().encode(korisnik.getSifra())+"',1, '"+ slika +"')";
System.out.println( sql);
try {
statement.executeUpdate( sql);
......
package com.example.SkuciSe.util;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
public class FileUploadUtil {
public static void saveFile(String uploadDir, String fileName,
MultipartFile multipartFile) throws IOException {
Path uploadPath = Paths.get(uploadDir);
if (!Files.exists(uploadPath)) {
Files.createDirectories(uploadPath);
}
try (InputStream inputStream = multipartFile.getInputStream()) {
Path filePath = uploadPath.resolve(fileName);
Files.copy(inputStream, filePath, StandardCopyOption.REPLACE_EXISTING);
} catch (IOException ioe) {
throw new IOException("Could not save image file: " + fileName, ioe);
}
}
}
\ No newline at end of file
......@@ -60,9 +60,7 @@
<div class="row">
<div class="col-12 bg-white p-0 px-3 py-3 mb-3">
<div class="d-flex flex-column align-items-center">
<img class="photo"
src="https://images.unsplash.com/photo-1541647376583-8934aaf3448a?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=634&q=80"
alt="">
<img class="photo" th:src="@{'data:image/png;charset=utf-8;base64,'+${loggedUser.getKorisnik().getSlika()}}" alt="slika korisnika">
<p class="fw-bold h4 mt-3"><span th:text="${loggedUser.getKorisnik().getIme()}"></span></p>
<p class="text-muted">Korisnik</p>
<br>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment