C'est une histoire lorsque vous utilisez un Drive partagé avec l'API Google Drive V3, car il y avait peu d'informations en dépit d'être super accro, alors notez!
Lorsque j'essaie de télécharger un fichier dans un dossier du lecteur partagé et de le déplacer en spécifiant l'ID du dossier parent dans meta.Parents
, pour une raison quelconque, j'obtiens l'erreur File not found [folderid] 404
... ・
Si vous spécifiez un ID de dossier dans MyDrive qui n'est pas un lecteur partagé à titre d'essai, il réussira, il ne semble donc y avoir aucun problème avec l'authentification et le déroulement du programme.
Du coup, j'ai dû définir les deux propriétés suivantes.
Propriété DriveId
de l'objet --meta
SupportsAllDrives
de l'objetCreateRequestComme l'ID du dossier parent, DriveId est la dernière chaîne de caractères de l'URL lorsque le répertoire racine du lecteur partagé correspondant est ouvert dans le navigateur. Il existe également une propriété appelée «TeamDriveId», mais vous pouvez utiliser DriveId au lieu de «Déprécié».
Le code global, y compris l'authentification, est maintenant comme ↓. C'est presque un exemple de copie de Quick Start. (Le code est C # SDK, mais les autres SDK seront identiques)
GoogleDriveUploader.cs
string[] Scopes = { DriveService.Scope.DriveFile }; //DriveFile à télécharger
string ApplicationName = "Nom de l'application approprié";
UserCredential credential;
using (var stream = new FileStream("client_secret_~~.apps.googleusercontent.com.json", FileMode.Open, FileAccess.Read))
{
string credPath = "token.json";
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
Scopes,
"user",
CancellationToken.None,
new FileDataStore(credPath, true)).Result;
Console.WriteLine("Credential file saved to: " + credPath);
}
// Create Drive API service.
var service = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
var meta = new Google.Apis.Drive.v3.Data.File()
{
Name = "Fichier à créer",
MimeType = "application/octet-stream", //Mettons en place de manière appropriée
DriveId = "ID de disque partagé(Comme 0ABcDeJiHiJKLmn23)",
Parents = new List<string> { "ID du dossier parent(Comme 1auYhd9J9j ~)" }
};
using (var stream = new System.IO.FileStream("Chemin complet du fichier à télécharger", System.IO.FileMode.Open))
{
//Nouvel ajout
var request = service.Files.Create(meta, stream, meta.MimeType);
request.Fields = "id, name";
request.SupportsAllDrives = true;
var ret = request.UploadAsync().Result;
if (ret.Status == Google.Apis.Upload.UploadStatus.Failed)
{
throw ret.Exception;
}
}
Recommended Posts