我不知道,为什么文件内容不会更新。有人提示吗?
DriveFile.Id有效。源文件是可读的。创建和删除文件工作正常。但不是更新。
我已经阅读了从v2到v3的迁移使用了generell的Http-PATCH方法进行更新。这是答案。
我不想删除该文件并创建一个新文件。
public long DriveUpdateFile(string fileID, string filename, string description, string parent, string mimeType)
{
int lError = (int)Win32ErrorCode.ERROR_SUCCESS;
if (System.IO.File.Exists(filename))
{
FilesResource.GetRequest get = m_Drive.Files.Get(fileID);
File body = get.Execute();
if(!string.IsNullOrEmpty(description))
body.Description = description;
if (!string.IsNullOrEmpty(mimeType))
body.MimeType = mimeType;
// v3 Sematics
if (!string.IsNullOrEmpty(parent))
{
body.Parents = new List<string>();
body.Parents.Add(parent);
}
try
{
// File's content.
using (System.IO.FileStream sr = System.IO.File.OpenRead(filename))
{
FilesResource.UpdateMediaUpload request = m_Drive.Files.Update(body, body.Id, sr, body.MimeType);
request.Upload();
}
}
catch (Exception e)
{
Console.WriteLine("An error occurred: " + e.Message);
lError = e.HResult;
}
}
else
{
Console.WriteLine("File does not exist: " + filename);
lError = (int)Win32ErrorCode.ERROR_FILE_NOT_FOUND;
}
return (lError);
}
答案 0 :(得分:0)
使用以下范围,
string[] scopes = new string[] {
DriveService.Scope.Drive,
DriveService.Scope.DriveFile,
DriveService.Scope.DriveMetadata,
DriveService.Scope.DriveAppdata,
DriveService.Scope.DriveScripts
};//DriveService.Scope.DriveReadonly
,然后检查上面的代码。问题是ParentFolderId。请删除此行
body.Parents = new List<string>();
body.Parents.Add(parent);
在此范围内不允许直接分配。它应该与请求对象一起提及:request.Parent ... bla bla
然后尝试。