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