web-dev-qa-db-ja.com

Googleドライブにファイルをアップロードする方法

Android私が作成しているアプリからGoogleドライブにテキストファイルをアップロードしようとしています。Googleチュートリアルから写真をアップロードする方法を学びました。また、アプリをテキストファイルに保存します。スプレッドシートにしたい場合があります。

13
j_vega19
16
Chintan Rathod

私はそのために多くの時間を費やしました...私の意見では、ドキュメントは.....それほど素晴らしいものではありません。

これは、REST API v3。MULTIPART UPLOADの例で行う方法です。

1。ステップ1-METADATAで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。ステップ2-METADATAを使用してマルチパートを作成する

適切なヘッダーでリクエストの最初の部分を作成します

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

3。ステップ3-FILEでマルチパートを作成する

リクエストの2番目の部分をファイルで作成します

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

4。ステップ4-呼び出し要求

googleDriveApi.uploadFileMultipart(
    metadataPart,
    multimediaPart
)

そしてこれは

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

この2つのマルチパートを送信すると、ドキュメントから-foo_bar_bazマークが自動的に取得されます

"各パーツを境界文字列で識別し、先頭に2つのハイフンを付けます。さらに、最後の境界文字列の後に2つのハイフンを追加します。"

1
Jack The Ripper