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

除了网上可查的大多数方式,我提供一个类似于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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容