14

所以我试图从我正在创建的 android 应用程序将文本文件上传到我的谷歌驱动器。我从 Google 教程中学会了如何上传图片。此外,我将在文本文件中使用我的应用程序中的字符串。潜在地,我想把它做成一个电子表格。有什么帮助吗?

4

2 回答 2

1

我为此花了很多时间......在我看来,文档......不是那么好。

这就是使用 REST API v3 应该如何完成的。多部分上传示例

1. 第一步 - 使用元数据创建 JSON

例如:

data class RetrofitMetadataPart(
    val parents: List<String>, //directories
    val name: String //file name
)

现在创建一个 JSON(我为此使用了 moshi)

val jsonAdapter = moshi.adapter<RetrofitMetadataPart>(RetrofitMetadataPart::class.java)

val metadataJSON = jsonAdapter.toJson(
    RetrofitMetadataPart(
        parents = listOf("yourFolderId"), 
        name = localFile.name
    )
)

当然,您可以使用不同的参数、值以及您喜欢的方式创建此元数据。您在此处拥有的元数据参数的完整列表: https ://developers.google.com/drive/api/v3/reference/files/create

2. 第二步 - 使用元数据创建多部分

我们使用正确的 Header 创建请求的第一部分

val metadataPart = MultipartBody.Part.create(
    RequestBody.create(MediaType.parse("application/json; charset=utf-8"), metadataJSON)
)

3. 第三步 - 使用您的文件创建 Multipart

使用文件创建我们请求的第二部分

val multimediaPart = MultipartBody.Part.create(
    RequestBody.create(MediaType.parse("image/jpeg"), localFile)
)

4. 第四步 - 呼叫请求

googleDriveApi.uploadFileMultipart(
    metadataPart,
    multimediaPart
)

这个调用

@Multipart
@POST("upload/drive/v3/files?uploadType=multipart")
fun uploadFileMultipart(
    @Part metadata: MultipartBody.Part,
    @Part fileMedia: MultipartBody.Part
): Completable

通过发送这两个 Multipart,您会自动从文档中获得那些--foo_bar_baz标记

“用一个边界字符串标识每个部分,前面有两个连字符。此外,在最终边界字符串之后添加两个连字符。”

于 2019-03-20T16:18:45.390 回答