2016-03-25 11 views
0

現在コンテンツのないGoogleドライブファイルを更新しようとしています。アップロードの本文は長さが数バイトです。更新を実行すると、応答本体はnullに戻り、ファイルは更新されません。GoogleドライブAPI for C# - 長さゼロのファイルの更新が機能しない

この問題は、空のファイルをアップロードしてファイルの内容を消去しようとしたときにも発生します。

私のコードは、他のすべてのファイルの更新のために動作します:

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); 

私は誤りがないレスポンスボディを照会していない場合は、ファイルを単純に更新されません。空のファイルをダウンロードすることもできませんが、簡単に回避できます。

答えて

0

私も同様の問題がありました。その理由は、Executeメソッドによって返されたファイルオブジェクトには、直接書き込み可能ではない0以外のプロパティが含まれているからです。この場合、このプロパティはIdです。 、

f.Id = null; 

他、より信頼性の高いソリューションFileクラスをインスタンス化することで、直接、必要なプロパティを設定します:Idnullを設定することで問題が解決され、更新するかどうかを確認するには

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

を/アップロード操作に失敗しました。次のコードを使用できます:

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"); 
    } 
} 
関連する問題