Android/Tips

Retrofit2 MultiPart로 이미지 파일 전송하기 (Kotlin)

Seoplee 2020. 12. 2. 20:15

파일 업로드를 위해 form-data 형식을 사용하는법을 알아보았다.

@Multipart
@POST("/Path")
fun uploadFile(@Part imageFile: MultipartBody.Part): Call<Response>?

Multipart를 이용해 api를 작성한다.

var file = File(filepath)
var requestBody : RequestBody = RequestBody.create(MediaType.parse("image/*"),file)
var body : MultipartBody.Part = MultipartBody.Part.createFormData("files",file.name,requestBody)
service?.uploadFile(body)?.enqueue(object : Callback<Response?> {
    override fun onResponse(
        call: Call<Response?>,
        response: Response<Response?>
    ) {

    }

    override fun onFailure(call: Call<Response?>, t: Throwable) {

    }

})

RequestBody를 생성하고, MultipartBody를 이용하여 form-data 형식으로 넘겨주면 된다.

 

+)

@Multipart
@POST("path")
fun uploadFile(@Part imageFile: ArrayList<MultipartBody.Part>, @Part ("param1") param1: RequestBody, @Part ("param2") param2: RequestBody): Call<Response>?
var images = ArrayList<MultipartBody.Part>()
for (index in 0 until datalist.size) {
    val file = File(datalist[index].path)
    val body = RequestBody.create(MediaType.parse("image/*"), file)
    images.add(MultipartBody.Part.createFormData("files",file.name,body))
}

다수의 파일 및 parameter를 추가하려면 위와같이 사용하면 된다.

 

 

Reference: blog.naver.com/greatsk553/221002404453