Spring controller'da multipartfile'ı, request dto'yu beraber @RequestPart, ile nasıl işlenir. Controller'da ve axiosta bu geliştirmeyi nasıl yaparım?




Spring Controller'da, bir JSON verisini Request DTO olarak almak ve aynı zamanda MultipartFile'ı @RequestPart ile almak için aşağıdaki adımları takip edebilirsiniz:


Request DTO (Data Transfer Object) oluşturma:

İlk olarak, JSON verisini request olarak alacağımız DTO sınıfını oluşturmalıyız. Örneğin, aşağıdaki gibi bir DTO sınıfı oluşturalım:


public class MyRequestDTO {

    // Örnek alanlar

    private String name;

    private int age;


    // Getter ve Setter'lar

    // ...

}

Spring Controller metodunu oluşturma:

Controller metodumuzda, JSON verisini String olarak alıp, ObjectMapper ile deserialize edeceğiz ve aynı zamanda MultipartFile'ı @RequestPart ile alacağız. Aşağıdaki gibi bir Controller metodunu oluşturalım:

java

Copy code

import org.springframework.web.bind.annotation.*;

import org.springframework.web.multipart.MultipartFile;

import com.fasterxml.jackson.databind.ObjectMapper;


@RestController

public class MyController {


    @PostMapping("/processData")

    public void processData(@RequestParam("jsonRequest") String jsonRequest,

                            @RequestPart("file") MultipartFile file) {

        try {

            // JSON string'i Request DTO'ya dönüştürme

            ObjectMapper objectMapper = new ObjectMapper();

            MyRequestDTO requestDTO = objectMapper.readValue(jsonRequest, MyRequestDTO.class);


            // Burada requestDTO ve file işlemlerini yapabilirsiniz

            // ...

        } catch (Exception e) {

            // Hata işlemleri

            // ...

        }

    }

}

Axios ile request yapma:

Frontend'de (örneğin JavaScript ile) Axios kullanarak bu endpoint'e JSON verisini ve MultipartFile'ı gönderebiliriz. Örnek Axios çağrısı aşağıdaki gibidir:


const axios = require('axios');


const formData = new FormData();

formData.append('jsonRequest', JSON.stringify({ "name": "John", "age": 30 }));

formData.append('file', inputFile); // inputFile, seçilen dosya input elementinden alınacak


axios.post('/processData', formData, {

    headers: {

        'Content-Type': 'multipart/form-data'

    }

}).then(response => {

    // Başarılı cevap durumunda işlemler

    console.log(response.data);

}).catch(error => {

    // Hata durumunda işlemler

    console.error(error);

});

Bu şekilde Axios ile oluşturduğumuz FormData, hem JSON verisini hem de MultipartFile'ı içerecek şekilde sunucuya gönderilecektir. Sunucu tarafında Spring Controller, JSON verisini alıp deserialize edecek ve MultipartFile'ı ayrıca alarak işlemlerini gerçekleştirecektir.

Please Select Embedded Mode To Show The Comment System.*

Daha yeni Daha eski

نموذج الاتصال