spring how to upload and control photots code example
Example 1: endpoint to upload and retrieve image in database using spring boot
package com.vasu.SpringBootFileUpload.Model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
@Entity
@Table(name = "ImageProfile")
public class MyModel {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "Id")
private long id;
@Column(name = "Name")
private String name;
@Lob
@Column(name = "Image")
private byte[] image;
public MyModel() {
super();
}
public MyModel(String name, byte[] image) {
super();
this.name = name;
this.image = image;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public byte[] getImage() {
return image;
}
public void setImage(byte[] image) {
this.image = image;
}
}
Example 2: endpoint to upload and retrieve image in database using spring boot
package com.vasu.SpringBootFileUpload.controller;
import com.vasu.SpringBootFileUpload.Model.MyModel;
import com.vasu.SpringBootFileUpload.Service.MyService;
import java.util.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
@Controller
public class MyController {
private static final Logger logger = LoggerFactory.getLogger("MyController.class");
@Autowired
private MyService myService;
@GetMapping("/")
public String test() {
return "index";
}
@PostMapping("/fileupload")
public String fileUpload(@RequestParam("name") String name, @RequestParam("file") MultipartFile file) {
try {
logger.info("Name= " + name);
byte[] image = file.getBytes();
MyModel model = new MyModel(name, image);
int saveImage = myService.saveImage(model);
if (saveImage == 1) {
return "success";
} else {
return "error";
}
} catch (Exception e) {
logger.error("ERROR", e);
return "error";
}
}
@GetMapping("/getDetail/{id}")
public String getDbDetils(@PathVariable String id, Model model) {
try {
logger.info("Id= " + id);
MyModel imagesObj = myService.getImages(Long.parseLong(id));
model.addAttribute("id", imagesObj.getId());
model.addAttribute("name", imagesObj.getName());
byte[] encode = java.util.Base64.getEncoder().encode(imagesObj.getImage());
model.addAttribute("image", new String(encode, "UTF-8"));
return "imagedetails";
} catch (Exception e) {
logger.error("Error", e);
model.addAttribute("message", "Error in getting image");
return "redirect:/";
}
}
}