2016-03-25 17 views
0

Ich versuche eine Google Drive-Datei zu aktualisieren, die derzeit keinen Inhalt hat. Der Upload-Körper ist einige Bytes lang. Wenn ich das Update ausführe, kommt der Antworttext auf null zurück und die Datei wird nicht aktualisiert.Google Drive API für C# - Null-Datei-Updates funktionieren nicht

Dieses Problem tritt auch auf, wenn ich versuche, den Inhalt einer Datei durch Hochladen einer leeren Datei zu löschen.

Mein Code funktioniert für alle anderen Datei Updates:

File f = service.Files.Get("myid").Execute(); 
FilesResource.UpdateMediaUpload r = service.Files.Update(f, f.Id, s, i.MimeType); 
r.Fields = "id,md5Checksum"; 
r.Upload(); 
Console.WriteLine(r.ResponseBody.Md5Checksum); 

Wenn ich den Antworttext abfragen nicht kein Fehler vorhanden ist, wird die Datei einfach nicht aktualisiert. Ich kann auch keine leere Datei herunterladen, aber das ist einfach zu umgehen.

Antwort

0

Ich hatte das ähnliche Problem. Der Grund dafür ist, dass das von der Execute-Methode zurückgegebene Dateiobjekt eine Nicht-Null-Eigenschaft enthält, die nicht direkt beschreibbar ist. In diesem Fall ist diese Eigenschaft die Id. Durch die Einstellung null zum Id ist das Problem gelöst:

f.Id = null; 

Die andere, zuverlässigere Lösung wird die File Klasse instanziiert und stellt direkt die benötigten Eigenschaften:

File f = new File(); 
f.MimeType = newMimeType; 
FilesResource.UpdateMediaUpload r = service.Files.Update(f, fileId stream, newMimeType); 

Um zu überprüfen, ob das Update/Upload-Vorgang fehlgeschlagen Sie können den folgenden Code verwenden:

FilesResource.UpdateMediaUpload r = service.Files.Update(f, fileId, stream, newMimeType); 
IUploadProgress progress = r.Upload(); 
if (progress.Status == UploadStatus.Failed) 
{ 
    if (progress.Exception != null) 
    { 
     throw progress.Exception; 
    } 
    else 
    { 
     throw new InvalidOperationException("upload process failed"); 
    } 
}