how to send Multiple Images to backend in Android Fast networking Library

980 Views Asked by At

I am getting Struggle to send an array of images to backend API param here is my code :

 var imagesFiles: ArrayList<File> = ArrayList()
    val mMultiPartFileMap:HashMap<String, ArrayList<File>>  =  
    HashMap<String, 
    ArrayList<File>>();
  private fun callUpdateProfileApi() {
    var sizeArray:Int=0
    binding.progressBar.visibility=View.VISIBLE
    var imageFileOne: File? = null
    imagesFiles.clear()

    if (selecteImageUri_1 != null) {
        imagesFiles.add(File(getPath(selecteImageUri_1!!)))

    }
    if (selecteImageUri_2 != null) {
        imagesFiles.add(File(getPath(selecteImageUri_2!!)))
    }
    if (selecteImageUri_3 != null) {
        imagesFiles.add(File(getPath(selecteImageUri_3!!)))

    }
    if (selecteImageUri_4 != null) {
        imagesFiles.add(File(getPath(selecteImageUri_4!!)))
    }
    if (selecteImageUri_5 != null) {
        imagesFiles.add(File(getPath(selecteImageUri_5!!)))
    }
    if (selecteImageUri_6 != null) {
        imagesFiles.add(File(getPath(selecteImageUri_6!!)))
    }
    if (selecteMainImageUri != null) {
        imageFileOne = File(getPath(selecteMainImageUri!!))
        sizeArray=imagesFiles.size+1
    }else{
        sizeArray=imagesFiles.size
    }
    mMultiPartFileMap.put("images[]",imagesFiles)
    AppLogger.e("images array","===="+imagesFiles.toString())

    Log.d("@@imageAll", imagesFiles.toString())

    AndroidNetworking.upload(Constant.BASE_URL + "app.php?api=editprofile")
        .addMultipartFile("image", imageFileOne)


      /*  .addMultipartFile("image1", imagesFiles[0])
        .addMultipartFile("image2", imagesFiles[1])*/
        .addMultipartParameter("userid", usetId)
        .addMultipartParameter("username", binding.etName.text.toString())
        .addMultipartParameter("image", binding.etName.text.toString())
        .addMultipartParameter("bio", binding.etBio.text.toString())
        /*.addMultipartParameter("education", binding.etBio.text.toString())*/
        .addMultipartParameter("dob", binding.etDob.text.toString())
        .addMultipartParameter("city", binding.etHomeTown.text.toString())
        .addMultipartParameter("fb_link", binding.etFbLink.text.toString())
 //            .addMultipartParameter("image_size",sizeArray.toString())
        .addMultipartFileList(mMultiPartFileMap)
        .setTag("editprofile")
        .setPriority(Priority.HIGH)
        .build()
        .getAsString(object : StringRequestListener {
            override fun onResponse(response: String) {
                AppLogger.e("MoodMatch response", "=====" + response)

                Log.d("@@image2", response)


                var gson: Gson = Gson()
                var updateProfileModel = gson.fromJson(response, UpdateProfile::class.java)
                if (updateProfileModel.error == false) {
                    if (updateProfileModel.data != null) {
                        MoodApplication.sharedPreference.getValueUserLogedIn()!!.data!!.image =
                            updateProfileModel.data.image
                    } else {
                        AppLogger.toast("Something went wrong")
                    }
                    AppLogger.toast(updateProfileModel.message)

                } else {
                    AppLogger.toast(updateProfileModel.message)
                }
                binding.progressBar.visibility=View.GONE
            }

            override fun onError(error: ANError) {
                binding.progressBar.visibility=View.GONE
                // handle error
                AppLogger.toast(error.localizedMessage)
                Log.e(" MoodMatc honError", "=======" + error.localizedMessage)
            }
        })
}
0

There are 0 best solutions below