使用Retrofit2上传图像(PATCH请求)

时间:2018-10-16 14:40:23

标签: android file-upload retrofit2 multipart

我知道如何使用POST请求将图像上传到服务器:

// AuthService.kt
@Multipart
@POST("auth/update")
fun updateInfo(
        @Header("Authorization") token: String,
        @Part("fullName") fullName: RequestBody,
        @Part("address") address: RequestBody,
        @Part avatarPic: MultipartBody.Part?
)

// Activity
val file = File(...
val reqFile = RequestBody.create(MediaType.parse("image/*"), file)
val avatarPic = MultipartBody.Part.createFormData("avatarPic", file.name, reqFile)
val fullName = RequestBody.create(MediaType.parse("text/plain"), "Saman")
val address = RequestBody.create(MediaType.parse("text/plain"), "Malekan")
authService.updateInfo(token, fullName, address, avatarPic)...

我想使用PATCH方法发送此请求,但不能。我似乎无法识别字段。我该如何实现?

1 个答案:

答案 0 :(得分:0)

我自己找到了解决方案。 我通过"Method Spoofing"发送请求。我只是将AuthService.kt中的方法更改为:

@Multipart
@POST("auth/update")
fun updateInfo(
        @Header("Authorization") token: String,
        @Part("fullName") fullName: RequestBody,
        @Part("address") address: RequestBody,
        @Part avatarPic: MultipartBody.Part?,
        @Part("_method") method: RequestBody = RequestBody.create(MediaType.parse("text/plain"), "PATCH")
)

请求中的_method字段导致充当PATCH请求的服务器。