首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用阿波罗kotlin将图像上传到Graphql服务器

使用阿波罗kotlin将图像上传到Graphql服务器
EN

Stack Overflow用户
提问于 2022-08-16 15:27:26
回答 1查看 134关注 0票数 0

我需要上传图像到我的图形my服务器从android应用程序。文档中的详细信息不起作用。我需要一个例子。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-17 16:25:59

想出了解决办法。第一,我需要创建一个上传标量类型。在片段类中:

代码语言:javascript
运行
复制
                requireContext().contentResolver.openFileDescriptor(
                    selectedImageUri!!,
                    "r",
                    null
                ) ?: return
                
                val file = File(
                    requireContext().cacheDir, requireContext().contentResolver.getFileName(
                        selectedImageUri
                    )
                )
                
                val body = UploadRequestBody(file, "image")
                
                val upload = DefaultUpload.Builder()
                    .content(file)
                    .fileName(file.name)
                    .contentType(body.contentType().toString())
                    .build()

万一UploadRequestBody类做了什么:

代码语言:javascript
运行
复制
class UploadRequestBody(
  private val file: File,
  private val contentType: String
) : RequestBody() {

override fun contentType() = "$contentType/*".toMediaTypeOrNull()

override fun contentLength() = file.length()

override fun writeTo(sink: BufferedSink) {
    val length = file.length()
    val buffer = ByteArray(DEFAULT_BUFFER_SIZE)
    val fileInputStream = FileInputStream(file)
    var uploaded = 0L
    fileInputStream.use { inputStream ->
        var read: Int
        while (inputStream.read(buffer).also { read = it } != -1) {
            uploaded += read
            sink.write(buffer, 0, read)
        }
    }
}
  companion object {
      private const val DEFAULT_BUFFER_SIZE = 2048
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73376489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档