美文网首页
Kotlin使用retrofit2上传多个文件的简单方法

Kotlin使用retrofit2上传多个文件的简单方法

作者: 随风飘丶 | 来源:发表于2023-11-15 16:26 被阅读0次

除了网上可查的大多数方式,我提供一个类似于List<File>的方式,服务器端使用MultipartFile[] 是可以正常接收。

参数中直接写 File[] 类型会报错不识别,直接写List<File>也不能用,后续根据提示改为ArrayList<File>,是发送到服务器端了,但服务器端接收报错。

各种尝试后,interface中 需要改成以下方式:

@Multipart
@POST("/upload")
suspend fun uploadFile(@Part file: List<MultipartBody.Part>,
                              @Part("imei") imei: String,
                              @Part("ts") ts: Long): BaseResponse

传参时使用以下代码把List<File>转为List<MultipartBody.Part>即可:

private fun convertList(fileList: List<File>): List<MultipartBody.Part> {
        return fileList.map { file ->
            MultipartBody.Part.createFormData("file", file.name,
                file.asRequestBody("application/octet-stream".toMediaTypeOrNull())
            )
        }
    }

使用示例:

// files为List<File>列表
ApiFactory.create<YourService>().uploadFile(convertList(files),"9999999",123456789)

相关文章

网友评论

      本文标题:Kotlin使用retrofit2上传多个文件的简单方法

      本文链接:https://www.haomeiwen.com/subject/ibwswdtx.html