Ошибка при загрузке изображения с модифицированной Android - PullRequest
0 голосов
/ 27 сентября 2019

Так что я не могу загрузить изображение на сервер.Если я удаляю параметр изображения, все работает, но когда я передаю параметр изображения, он загружает любые данные, фактически сервер не получает запрос.

ViewModel

 fun updateProfile() {

        val student = student.value!!

        // Has Map of all the fields
        val map = HashMap<String, @JvmSuppressWildcards RequestBody>()
        map["name"] = RequestBody.create(MediaType.parse("multipart/form-data"), student.name)
        map["university"] = RequestBody.create(MediaType.parse("multipart/form-data"), student.university)
        map["phoneNumber"] = RequestBody.create(MediaType.parse("multipart/form-data"), student.phoneNumber)
        map["password"] = RequestBody.create(MediaType.parse("multipart/form-data"), student.password)

        studentRepository.updateProfile(map, profilePhoto)
    }

    fun updateFile(path: Uri) {
        val file = File(path.path)
        Log.e("file", file.absolutePath)
        val reqFile = RequestBody.create(MediaType.parse("multipart/form-data"), file)
        profilePhoto = MultipartBody.Part.createFormData("photo", file.name, reqFile)
    }

profilePhoto - это изображение, которое необходимо загрузить на сервер.

Фрагмент

override fun onActivityResult(requestCode: Int, resultCode: Int, imageReturnedIntent: Intent?) {
        super.onActivityResult(requestCode, resultCode, imageReturnedIntent)

        // If user presses back button without choosing an image
        if (imageReturnedIntent == null) {
            return
        }

        val selectedImage = imageReturnedIntent.data
        //userAvatar.setImageURI(selectedImage)
        userAvatar.load(selectedImage) {
            transformations(arrayListOf(CircleCropTransformation()))
            crossfade(true)
        }
        viewModel.updateFile(selectedImage!!)
    }

Вот часть фрагмента, которая вызывает ViewModelфункция для подготовки изображения.

Интерфейс

@Multipart
@PATCH("students/profile/update")
fun updateProfile(@PartMap param: Map<String, @JvmSuppressWildcards RequestBody>, @Part photo: MultipartBody.Part): Call<Void>

Репозиторий

 fun updateProfile(param: Map<String, @JvmSuppressWildcards RequestBody>, image: MultipartBody.Part): LiveData<Response<Void>> {

        client.updateProfile(param, image).enqueue(object : Callback<Void> {

            override fun onFailure(call: Call<Void>, t: Throwable) {
            }

            override fun onResponse(call: Call<Void>, response: Response<Void>) {
                voidResponse.value = response
            }
        })
        return voidResponse
    }

Когда я вызываю функцию обновленияэто пришло как журнал модернизации.

2019-09-28 00:08:55.095 13601-15993/com.appname.app D/OkHttp: --> PATCH http://192.168.1.5:8080/students/profile/update
2019-09-28 00:08:55.095 13601-15993/com.appname.app D/OkHttp: Content-Type: multipart/form-data; boundary=5c90756d-997d-4831-b53f-da341ec44f3a
2019-09-28 00:08:55.096 13601-15993/com.appname.app D/OkHttp: Content-Length: 1055
2019-09-28 00:08:55.096 13601-15993/com.appname.app D/OkHttp: Accept: application/json
2019-09-28 00:08:55.096 13601-15993/com.appname.app D/OkHttp: Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InZhcnVuY3I3cmFqQGdtYWlsLmNvbSIsImV4cCI6MTU2OTYwOTQ3M30.yy2ZeKluZxT_mARz3aUbgHzwkAMzfCZAreOCiuiygIg

Может кто-нибудь помочь мне, что случилось?Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...