使用多部分列表改造 post api

问题描述 投票:0回答:1

我们可以将请求正文列表发送到改造中的 api 调用,如下所示

@POST("task/updatedropoff")
    @Multipart
    fun taskUpdateDropOff(
        @Header("apikey") token: String,
        @PartMap user: HashMap<String, RequestBody>,
        @Part image1: MultipartBody.Part? = null,
    ): Call<BaseClass<String>>?

我们如何发送与请求主体列表相同的部件列表?

我已经在retrofit库、android和stack中搜索过,但没有解决。

android kotlin retrofit
1个回答
0
投票

您可以使用

@Part List<MultipartBody.Part>
发送零件列表。列表的每个部分可以代表不同的文件或数据。关键是为您要发送的每个项目构建一个
MultipartBody.Part
对象列表。

下面是如何上传的示例。

interface ApiService {
    @Multipart
    @POST("upload")
    suspend fun uploadFiles(
        @Part files: List<MultipartBody.Part>
    ): Response<ResponseBody>
}

用于创建列表:

fun createMultipartList(fileUris: List<Uri>, context: Context): List<MultipartBody.Part> {
    val parts = mutableListOf<MultipartBody.Part>()
    
    fileUris.forEach { uri ->
        val file = File(uri.path)
        val requestBody = file.asRequestBody("multipart/form-data".toMediaTypeOrNull())
        val part = MultipartBody.Part.createFormData("file", file.name, requestBody)
        parts.add(part)
    }
    
    return parts
}
© www.soinside.com 2019 - 2024. All rights reserved.