diff --git a/back-skeleton/initdb/1_TABLES.sql b/back-skeleton/initdb/1_TABLES.sql
index 41a112f00f367c34f469e63b2c04f61036405f9d..a71ee28ad95b60a4cbd4df61229f60158cf6363b 100644
--- a/back-skeleton/initdb/1_TABLES.sql
+++ b/back-skeleton/initdb/1_TABLES.sql
@@ -4,7 +4,8 @@ create table students
     first_name TEXT not null,
     last_name TEXT not null,
     birthdate date null,
-    major_id int null
+    major_id int null,
+    image bytea null
 );
 
 create table majors
diff --git a/back-skeleton/initdb/2_DEFAULT_ENTRIES.sql b/back-skeleton/initdb/2_DEFAULT_ENTRIES.sql
index 8cc78f609f6c7767f00c7b8015519ea10cb3eae5..ae5925afbdbdd1ba3f9bb0a635c2fc7bfcd1d9e5 100644
--- a/back-skeleton/initdb/2_DEFAULT_ENTRIES.sql
+++ b/back-skeleton/initdb/2_DEFAULT_ENTRIES.sql
@@ -1,6 +1,6 @@
 INSERT INTO majors (id, name, description) VALUES (1, 'MIN', 'Ouaiiis du code partout');
 
-INSERT INTO students (id, first_name, last_name, birthdate, major_id) VALUES (1, 'Paul', 'Harrohide', '2002-06-15', 1);
+INSERT INTO students (id, first_name, last_name, birthdate, major_id, image) VALUES (1, 'Paul', 'Harrohide', '2002-06-15', 1, null);
 
 INSERT INTO courses (id, name, hours) VALUES (1, 'Java', 30);
 INSERT INTO student_course (id, student_id, course_id) VALUES (1, 1, 1);
diff --git a/back-skeleton/src/main/java/com/takima/backskeleton/DTO/StudentDto.java b/back-skeleton/src/main/java/com/takima/backskeleton/DTO/StudentDto.java
new file mode 100644
index 0000000000000000000000000000000000000000..f92a77828934868723bc4a490c0d8938260006c9
--- /dev/null
+++ b/back-skeleton/src/main/java/com/takima/backskeleton/DTO/StudentDto.java
@@ -0,0 +1,21 @@
+package com.takima.backskeleton.DTO;
+
+import com.takima.backskeleton.models.Course;
+import com.takima.backskeleton.models.Major;
+import com.takima.backskeleton.models.Student;
+import lombok.Builder;
+import lombok.Getter;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.time.Instant;
+import java.util.List;
+@Builder
+@Getter
+public class StudentDto {
+    private String firstName;
+    private String lastName;
+    private Instant birthdate;
+    private List<Course> courses;
+    private Major major;
+    private MultipartFile image;
+}
diff --git a/back-skeleton/src/main/java/com/takima/backskeleton/DTO/StudentMapper.java b/back-skeleton/src/main/java/com/takima/backskeleton/DTO/StudentMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..f2f8aab8bbdbe4cb3fc66a2e61fc225785ad0cd6
--- /dev/null
+++ b/back-skeleton/src/main/java/com/takima/backskeleton/DTO/StudentMapper.java
@@ -0,0 +1,29 @@
+package com.takima.backskeleton.DTO;
+
+import com.takima.backskeleton.models.Student;
+
+import java.io.IOException;
+
+public class StudentMapper {
+    public static Student fromDto(StudentDto dto, Long id) throws IOException {
+        return new Student.Builder()
+                .id(id)
+                .firstName(dto.getFirstName())
+                .lastName(dto.getLastName())
+                .birthdate(dto.getBirthdate())
+                .courses(dto.getCourses())
+                .major(dto.getMajor())
+                .image(dto.getImage().isEmpty() ? dto.getImage().getBytes() : null)
+                .build();
+    }
+
+    public static StudentDto toDto (Student student){
+        return StudentDto.builder()
+                .firstName(student.getFirstName())
+                .lastName(student.getLastName())
+                .birthdate(student.getBirthdate())
+                .courses(student.getCourses())
+                .major(student.getMajor())
+                .build();
+    }
+}
diff --git a/back-skeleton/src/main/java/com/takima/backskeleton/controllers/StudentController.java b/back-skeleton/src/main/java/com/takima/backskeleton/controllers/StudentController.java
index f82a41cedae018c6e0be7afa2f593530d65d4f07..91fac9fce148445704a630ac8a0dafa851e3ded6 100644
--- a/back-skeleton/src/main/java/com/takima/backskeleton/controllers/StudentController.java
+++ b/back-skeleton/src/main/java/com/takima/backskeleton/controllers/StudentController.java
@@ -1,5 +1,6 @@
 package com.takima.backskeleton.controllers;
 
+import com.takima.backskeleton.DTO.StudentDto;
 import com.takima.backskeleton.models.Student;
 import com.takima.backskeleton.services.StudentService;
 import lombok.RequiredArgsConstructor;
@@ -27,7 +28,12 @@ public class StudentController {
     }
 
     @PostMapping("")
-    public void addStudent(@RequestBody Student student) {
-        studentService.addStudent(student);
+    public void addStudent(@RequestBody StudentDto studentDto) {
+        studentService.addStudent(studentDto);
+    }
+
+    @PostMapping("/{id}")
+    public void updateStudent(@RequestBody StudentDto studentDto, @PathVariable Long id) {
+        studentService.updateStudent(studentDto, id);
     }
 }
diff --git a/back-skeleton/src/main/java/com/takima/backskeleton/models/Student.java b/back-skeleton/src/main/java/com/takima/backskeleton/models/Student.java
index 7193fb907d30ffe27ba9ad925273f98447c05851..894e4ec00a7ec6e93d63d42ab3c526f5725c9a5c 100644
--- a/back-skeleton/src/main/java/com/takima/backskeleton/models/Student.java
+++ b/back-skeleton/src/main/java/com/takima/backskeleton/models/Student.java
@@ -27,6 +27,8 @@ public class Student {
     @ManyToOne()
     @JoinColumn(name = "major_id")
     private Major major;
+    @Column(name = "image")
+    private byte[] image;
 
     private Student(Builder builder) {
         this.id = builder.id;
@@ -35,20 +37,23 @@ public class Student {
         this.birthdate = builder.birthdate;
         this.courses = builder.courses;
         this.major = builder.major;
+        this.image = builder.image;
     }
-    public Student(){
+    public Student() {
     }
 
     public static class Builder {
-        private final Long id;
+        private Long id;
         private String firstName;
         private String lastName;
         private Instant birthdate;
         private List<Course> courses;
         private Major major;
+        private byte[] image;
 
-        public Builder(Long id) {
+        public Builder id (Long id) {
             this.id = id;
+            return this;
         }
 
         public Builder firstName(String firstName) {
@@ -71,6 +76,10 @@ public class Student {
             this.birthdate = birthdate;
             return this;
         }
+        public Builder image(byte[] image) {
+            this.image = image;
+            return this;
+        }
 
         public Student build() {
             return new Student(this);
diff --git a/back-skeleton/src/main/java/com/takima/backskeleton/services/StudentService.java b/back-skeleton/src/main/java/com/takima/backskeleton/services/StudentService.java
index e63d921b3a4e79fff3a9256b029a31f8f3acbfb8..21cb0d1fe765562d8fd54a7bbd22889634fe3e8c 100644
--- a/back-skeleton/src/main/java/com/takima/backskeleton/services/StudentService.java
+++ b/back-skeleton/src/main/java/com/takima/backskeleton/services/StudentService.java
@@ -1,12 +1,16 @@
 package com.takima.backskeleton.services;
 
 import com.takima.backskeleton.DAO.StudentDao;
+import com.takima.backskeleton.DTO.StudentDto;
+import com.takima.backskeleton.DTO.StudentMapper;
 import com.takima.backskeleton.models.Student;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Component;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.NoSuchElementException;
 
 @Component
 @RequiredArgsConstructor
@@ -24,9 +28,26 @@ public class StudentService {
         studentDao.deleteById(id);
     }
 
-    public void addStudent(Student student) {
+    public void addStudent(StudentDto studentDto) {
+        Student student;
+        try {
+            student = StudentMapper.fromDto(studentDto, null);
+        } catch (IOException e) {
+            throw new RuntimeException("Error with Student image", e);
+        }
         studentDao.save(student);
+    }
 
+    public void updateStudent(StudentDto studentDto, Long id) {
+        studentDao.findById(id)
+                .orElseThrow(() -> new NoSuchElementException("Student doesn't exist"));
+        Student student;
+        try {
+            student = StudentMapper.fromDto(studentDto, id);
+        } catch (IOException e) {
+            throw new RuntimeException("Error with Student image", e);
+        }
+        studentDao.save(student);
     }
 
     public List<Student> searchByMajorAndCourse(int majorId, int courseId) {