android - 使用 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."}
请尝试帮助我,这将非常有帮助谢谢
提前致谢 !
解决方案
将数组发送到后端仍然与您当前的代码相同,只需稍作改动:
multiType.add(MultipartBody.Part.createFormData("images[]", fileName, requestBody))
您现在应该注意,所有文件现在都使用相同的名称,后跟 []。