使用 Retrofit 发送多图像 - Android Studio

Send Multi Image with Retrofit - Android Studio

我正在尝试通过改造将图像发送到 .net 核心服务器。 Multipartbody.Part 发送单张图片没有问题。好的。但是我尝试 List 或 Array ,图像数组没有转到服务器。

我试了好几天了,还是不能得出结论,求大神指点。


.NetCore API

public IActionResult AddPost([FromForm]string title, [FromForm]string description, [FromForm]string[] steps, [FromForm]string[] ingredients, [FromForm]IFormFile[] photos)
        {}

调试说明;

标题:好的,数据存在。

描述:好的,数据存在。

步骤:好的,数据存在。

成分:好的,数据存在。

**照片:COUNT:0,数据不存在。*****************


改造方法;

 @Multipart
        @POST("Post/addpost")
        fun sendPost(@Part ("title") title: String,
                     @Part ("description") description: String,
                     @Part ("steps") steps: Array<String>,
                     @Part ("ingredients") ingredients: Array<String>,
                     @Part photos: Array<MultipartBody.Part> ): Call<String>

方法的使用;

viewModel.sendPost(
                    title = postTitle.text.toString(),
                    description = postDescription.text.toString(),
                    steps = steps,
                    ingredients = ingredients,
                    photos = photos
                )

此方法创建数组

val photos = Array<MultipartBody.Part>(mediaList.size){MultipartBody.Part.createFormData("", "")}

mediaList.forEachIndexed { index, part ->
                    photos[index] = part
                }

getPostMedia() 方法

private fun getPostMedia(): MutableList<MultipartBody.Part> {

        var postList = mutableListOf<MultipartBody.Part>()

        PostList.instance!!.forEachIndexed { index, post ->
            if (!post.isAddPost) {
                postList.add(prepareFilePart("post[$index]", post.postUri))
            }
        }
        return postList
    }
  • 我解决了问题 *

解决方法,在getPostMedia()方法中。

postList.add(prepareFilePart("photos", post.postUri))