首页 > 解决方案 > 使用 Retrofit 将文件数组上传到服务器

问题描述

该应用程序的 API 已经开发完成。该api适用于邮递员。 POSTMAN 请求正文 我不知道如何在 android 中使用改造来做同样的事情。我试过数组列表。每次我得到相同的errorMsg。 {"error":true,"errorMsg":"The images must be an array."} APi 在邮递员中运行良好。

我的代码是

我的界面

@Multipart
@POST("upload/prescription")
fun uploadPrescription(
    @Query("token") token: String,
    @Part image: List<MultipartBody.Part>): Call<RequestBody>

我调用服务器的代码

 val file = File(imageUri.toString())
 val requestBody:RequestBody = RequestBody.create("image/*".toMediaTypeOrNull(),file)

 val multiType = ArrayList<MultipartBody.Part>()

 multiType.add(MultipartBody.Part.createFormData("images","123456",requestBody))

 val call = RetrofitClient.getApiWithGson().uploadPrescription(SharedPref.getIsToken(this@AttachPrescription).toString(),multiType)

    call.enqueue(object : Callback<RequestBody> {
        override fun onFailure(call: Call<RequestBody>, t: Throwable) {
            Log.d("Failure",t.message.toString())
        }

        override fun onResponse(call: Call<RequestBody>, response: Response<RequestBody>) {
            Log.d("Response Upload",response.body().toString())
        }

    })

我得到了输出

Response Upload: {"error":true,"errorMsg":"The images must be an array."}

请尝试帮助我,这将非常有帮助谢谢

提前致谢 !

标签: androidretrofit2

解决方案


将数组发送到后端仍然与您当前的代码相同,只需稍作改动:

multiType.add(MultipartBody.Part.createFormData("images[]", fileName, requestBody))

您现在应该注意,所有文件现在都使用相同的名称,后跟 []。


推荐阅读