Avoir un peu de difficulté à essayer de résoudre le problème avec le téléchargement de fichier sur Google Drive en utilisant leur / téléchargement point final. Je continue à obtenir Le code C # suivant est utilisé pour créer la demande: p> corps multipartail mal formé. Code> Erreur même lorsque j'essaie de télécharger du texte simple simple sous forme de fichier.
--not_so_random_boundary
Content-Type: application/json; charset=utf-8
Content-Disposition: form-data
{"name":"test.txt","mimeType":"text/plain","parents":["/*snip*/"]}
--not_so_random_boundary
Content-Type: text/plain
Content-Disposition: form-data
The quick brown fox jumps over the lazy dog
--not_so_random_boundary--
3 Réponses :
Je pense que la structure du corps de la demande pour Si cela n'a pas fonctionné, je m'excuse. P> P> multipart / associé code> pourrait ne pas être correcte. Alors, que diriez-vous de modifier comme suit?
Body Demande modifiée: H3>
--not_so_random_boundary
Content-Type: application/json; charset=utf-8
Content-Disposition: form-data; name="metadata"
{"name":"test.txt","mimeType":"text/plain","parents":["/*snip*/"]}
--not_so_random_boundary
Content-Type: text/plain
Content-Disposition: form-data; name="file"
The quick brown fox jumps over the lazy dog
--not_so_random_boundary--
Nom code> pour chaque partie de
Disposition du contenu code>. Li>
ul>
Remarque: h3>
https://www.googleapis.com/dupload/drive/v3/files?uploadtype=multipart code> comme méthode postale , un fichier texte de
test.txt code> qui a le contenu de
le renard brun rapide saute sur le chien paresseux code> est créé. li>
ul>
Références: h3>
Ajout de disposition de contenu code> en-tête avec
nom = métadonnées code> a fixé le problème. Observation intéressante;
Type de contenu Code> L'en-tête ajouté à
StreamContent CODE> est ignoré et
MIMETYPE code> La propriété est utilisée.
@iiminov merci de l'avoir testé et de répondre. Je suis content que votre problème ait été résolu.
Grâce à la suggestion de @tanaike, nous avons trouvé le problème avec mon code.
s'avère que cela n'est pas spécifiquement mentionné dans la documentation (ou des exemples de code) mais ajout de La demande finale peut être réécrite comme suit: P> < PRE> XXX PRE> note forte> que vous n'avez besoin que de spécifier J'espère que cela aide quelqu'un d'autre à l'avenir. P> p> disposition de contenu: format-données; Nom = "Metadata" Code> au
StringContent Code> La partie du corps de la demande fait toute la différence. P>
"Parents": ["{folder_id}"] code> Propriété Si vous souhaitez télécharger un fichier sur un sous-dossier dans Google Drive. P>
Une autre option serait d'utiliser la bibliothèque client Google .NET et de la laisser hurler le téléchargement pour vous.
// Upload file Metadata var fileMetadata = new Google.Apis.Drive.v3.Data.File() { Name = "Test hello uploaded.txt", Parents = new List() {"10krlloIS2i_2u_ewkdv3_1NqcpmWSL1w"} }; string uploadedFileId; // Create a new file on Google Drive await using (var fsSource = new FileStream(UploadFileName, FileMode.Open, FileAccess.Read)) { // Create a new file, with metadata and stream. var request = service.Files.Create(fileMetadata, fsSource, "text/plain"); request.Fields = "*"; var results = await request.UploadAsync(CancellationToken.None); if (results.Status == UploadStatus.Failed) { Console.WriteLine($"Error uploading file: {results.Exception.Message}"); } // the file id of the new file we created uploadedFileId = request.ResponseBody?.Id; }