【问题标题】:How can upload image from file path to server retrofit kotlin android如何将图像从文件路径上传到服务器改造 kotlin android
【发布时间】:2022-01-11 10:18:02
【问题描述】:

如何将图像从文件路径上传到服务器改造 Kotlin android

api接口

 @Multipart
 @POST("add_passport.php")
 suspend fun addPassport(
    @Part("userid") userid: String,
    @Part("fistname") fistname:String,
    @Part("surname") surname:String,
    @Part("nationality") nationality:String,
    @Part("dof") dof:String,
    @Part("gender") gender:String,
    @Part("age") age:String,
    @Part("sig") sig: String,
    @Part("salt") salt: String ):Response<PassportInsertApiClass>

存储库

suspend fun addPassport(userid: String,fistname:String,surname:String,nationality:String,
                        dof:String,gender:String,age:String,sig:String,salt:String,image:Image):Response<PassportInsertApiClass>{
    return RetrofitInstance.api.addPassport(userid,fistname,surname,nationality,dof,gender,age,sig,salt)
}

查看模型

fun addPassport(userid: String,fistname:String,surname:String,nationality:String,
                dof:String,gender:String,age:String,sig:String,salt:String,image: Image):
        MutableLiveData<Response<PassportInsertApiClass>>{
    val addPassport = MutableLiveData<Response<PassportInsertApiClass>>()
    viewModelScope.launch {
        addPassport.postValue(repository.addPassport(userid, fistname, surname, nationality, dof, gender, age, sig, salt, image))
    }
    return addPassport
}

片段

当用户备份所有数据上传到服务器时,我已经使用 SQLite 保存了离线数据

我不知道图像所以没有写任何东西:(

【问题讨论】:

    标签: android sqlite retrofit viewmodel


    【解决方案1】:

    更新您的 API 接口。

    @Multipart
    @POST("add_passport.php")
     suspend fun addPassport(
        @Part profile_picture: MultipartBody.Part?,
        @Part("userid") userid: String,
        @Part("fistname") fistname:String,
        @Part("surname") surname:String,
        @Part("nationality") nationality:String,
        @Part("dof") dof:String,
        @Part("gender") gender:String,
        @Part("age") age:String,
        @Part("sig") sig: String,
        @Part("salt") salt: String ):Response<PassportInsertApiClass>
    

    更新您的存储库

    suspend fun addPassport(profile_picture: MultipartBody.Part?, userid: String,fistname:String,surname:String,nationality:String,
                            dof:String,gender:String,age:String,sig:String,salt:String,image:Image):Response<PassportInsertApiClass>{
        return RetrofitInstance.api.addPassport(profile_picture, userid,fistname,surname,nationality,dof,gender,age,sig,salt)
    }
    

    更新您的视图模型

    fun addPassport(profile_picture: MultipartBody.Part?, userid: String,fistname:String,surname:String,nationality:String,
                    dof:String,gender:String,age:String,sig:String,salt:String,image: Image):
            MutableLiveData<Response<PassportInsertApiClass>>{
        val addPassport = MutableLiveData<Response<PassportInsertApiClass>>()
        viewModelScope.launch {
            addPassport.postValue(repository.addPassport(profile_picture, userid, fistname, surname, nationality, dof, gender, age, sig, salt, image))
        }
        return addPassport
    }
    

    在调用 viewModel.addPassport() 方法的 Activity/Frgament 中更新以下代码,并在该方法中为 profile_picture 发送 body 对象。

    var body: MultipartBody.Part? = null
            if (!selectedImagePath.equals("", ignoreCase = true)) {
                val file = File(selectedImagePath)
                val reqFile = RequestBody.create(MediaType.parse("image/*"), file)
                body = MultipartBody.Part.createFormData("profile_picture", file.getName(), reqFile)
            }
    

    【讨论】:

      猜你喜欢
      • 2018-04-03
      • 2019-02-14
      • 1970-01-01
      • 2021-07-21
      • 2018-10-05
      • 2016-03-29
      • 1970-01-01
      • 2017-05-21
      • 1970-01-01
      相关资源
      最近更新 更多