如何将 JSON 的多个图像文件从 android 上传到服务器?

How to upload multiple image files with JSON to server from android?

我必须从 android 上传 JSON 中包含的多张图片。

{
       "topicId" : 1,
       "QuizTest": [
            {
                "question": "This first question for test",
                "Image" : "file:///D:/Images/fb_logo.png",
                "isTrue" : 3,
                "OptionFor":
                    {
                        "1" : "i am option 1",
                        "2" : "i am option 2",
                        "3" : "i am option 3",
                        "4" : "i am option 4"
                    }
                
            },
            {
                "question": "This second question for test",
                "Image" : "",
                "isTrue" : 2,
                "OptionFor": 
                    {
                        "1" : "i am  2 option 1",
                        "2" : "i am 2 option 2"
                     }
                
            },
            {
                "question": "This third question for test",
                "Image" : "file:///D:/Images/icon.png",
                "isTrue" : 1,
                "OptionFor": 
                    {
                        "1" : "i am 3 option 1",
                        "2" : "i am 3 option 2",
                        "3" : "i am 3 option 3",
                        "4" : "i am 3 option 4",
                        "5" : "i am 3 option 5"
                     }
                
            }
        ]
}

我有这样的数据要上传。

我试过用凌空,android联网。但是不知道能不能上传这样的文件

我上传的正文为 json。不起作用。请帮忙。

您可以将 Retrofit 用于 API 调用,您可以将负载作为 @Body 发送,或者 API 提供商要求。您可以在 Retrofit 构建器中设置 Gson 转换器,这样您就不必编写普通的 Json 对象。

如果你使用的是 Kotlin,你可以像下面这样写数据类

data class Options(
  val 1: String,
  val 2: String,
  val 3: String,
  val 4: String,
  val 5: String 
)
data class Question(
  val question: String,
  val Image: String,
  val isTrue: Int,
  val OptionFor: Options
)
data class Test(
  val topicId:Long,
  val QuizTest: Questions
)

然后您可以在 API 调用

中将它们作为负载发送
@POST("{api_end_point}")
fun sendData(@Body test: Test)