web-dev-qa-db-fra.com

Comment télécharger un fichier sur Google Drive

Donc, im essayant de télécharger un fichier texte sur mon Google Drive à partir d'un fichier Android app je crée. J'ai appris à télécharger une image du didacticiel Google. En outre, je vais utiliser les cordes de Mon application dans le fichier texte. Potentiellement, je veux en faire une feuille de calcul. Toute aide?

13
j_vega19
16
Chintan Rathod

J'ai passé tellement de temps pour cela ... À mon avis, la documentation est ..... pas si grande.

Voici comment cela devrait être fait avec REST API V3. Exemple de téléchargement multipart

1. Première étape - Créez JSON avec MetaData

Par exemple:

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

et maintenant créer un json (j'ai utilisé moshi pour cela)

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

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

bien sûr, vous pouvez créer cette métadonnée avec différents paramètres, valeurs et bien sûr de votre manière préférée. Liste complète des paramètres de métadonnées Vous avez ici: https://developers.google.com/drive/api/v3/reference/files/create

2. Deuxième étape - Créez un multiart avec des métadonnées

Nous créons une première partie de notre demande avec une en-tête appropriée

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

3. Étape trois - Créez un multiparti avec votre fichier

Créer une deuxième partie de notre demande avec fichier

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

4. Quatrième étape - demande d'appel

googleDriveApi.uploadFileMultipart(
    metadataPart,
    multimediaPart
)

et cela invoque

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

en envoyant ces deux multiparts, vous obtenez automatiquement ces -- FOO_BAR_BAZ marque de la documentation

"Identifiez chaque pièce avec une chaîne de limites précédée de deux traits d'union. De plus, ajoutez deux traits d'union après la chaîne de limites finale."

1
Jack The Ripper