【问题标题】:Upload Multiple Files With Ktor使用 Ktor 上传多个文件
【发布时间】:2023-02-01 21:33:07
【问题描述】:

我正在使用 ktor 和 kmm 将图像列表上传到服务器 但是文档中没有可用的指南让我上传文件列表 我正在将我的文件转换为字节数组并上传它们

我试过这样上传

mainClient.post {
    setBody(
        MultiPartFormDataContent(
              formData {
append("attachments[]", listOf(toBytes(kmmFile),toBytes(kmmFile)) )
             }
          )
     )
}

但连接被拒绝

【问题讨论】:

    标签: kotlin multipart kotlin-multiplatform ktor ktor-client


    【解决方案1】:

    您可以遍历集合中的所有字节数组并为它们中的每一个调用 append 方法。这是一个例子:

    val images: List<ByteArray> // assigned externally
    val response = client.post("https://httpbin.org/post") {
        setBody(MultiPartFormDataContent(
            formData {
                for (bytes in images) {
                    append("attachments[]", bytes)
                }
            }
        ))
    }
    

    【讨论】:

      【解决方案2】:

      我使用下面的代码上传单个文件并在调用此方法时运行 forEach(对于每个 n 追加对我来说不起作用)。我认为您的服务必须支持同时上传多个文件。

          override suspend fun upload(
          uploadFiles: Map<String, File>,
          texts: Map<String, String>
      ): ResultWrapper<ResponseData<List<UploadFileDto>>> {
      
          return {
              httpClient.submitForm {
                  url(BASE_URL + "api/v1/static/upload-file")
                  method = HttpMethod.Post
                  setBody(MultiPartFormDataContent(
                      formData {
                          headers {
                              append(
                                  "document",
                                  uploadFiles.entries.first().value.readBytes(),
                                  Headers.build {
                                      append(
                                          HttpHeaders.ContentDisposition,
                                          "filename=${uploadFiles.entries.first().value.name}"
                                      )
                                  })
                          }
                      }
                  ))
              }.body()
          }
      

      【讨论】:

        猜你喜欢
        • 2020-06-07
        • 2019-05-07
        • 1970-01-01
        • 2014-05-04
        • 2016-08-10
        • 1970-01-01
        • 2011-09-23
        • 1970-01-01
        • 2017-01-13
        相关资源
        最近更新 更多