【发布时间】:2019-09-18 06:43:02
【问题描述】:
我在使用 Google Drive API v3 更新 Google Drive 中的现有文件时遇到问题。从下面的代码创建(第一次上传文档)工作得很好(else 语句)但是,更新失败。
我已验证 fileId 是正确的。
返回文件.Id;抛出异常 fill 为 null。
感谢任何帮助。
public string UploadFileToDrive(string fileName, string filePath, string contentType)
{
var fileMetadata = new File();
fileMetadata.Name = fileName;
fileMetadata.Parents = new List<string> { folderId };
DriveService service = GetDriveService(credential);
string query = "mimeType!='application/vnd.google-apps.folder' and trashed = false and name = '" + fileName + "'";
FilesResource.ListRequest req;
req = service.Files.List();
req.Q = query;
req.Fields = "files(id, name)";
var result = req.Execute();
if (result.Files.Count == 1)
{
FilesResource.UpdateMediaUpload updateRequest;
string fileId = result.Files[0].Id;
using (var stream = new FileStream(filePath, FileMode.OpenOrCreate))
{
updateRequest = service.Files.Update(fileMetadata, fileId, stream, contentType);
updateRequest.Upload();
var file = updateRequest.ResponseBody;
return file.Id;
};
}
else
{
FilesResource.CreateMediaUpload request;
using (var stream = new FileStream(filePath, FileMode.Open))
{
request = service.Files.Create(fileMetadata, stream, contentType);
request.Fields = "id";
request.Upload();
var file = request.ResponseBody;
return file.Id;
};
}
}
System.NullReferenceException HResult=0x80004003 消息=对象引用未设置为对象的实例。 Source=EPGMonitor StackTrace: 在 EPGMonitor.GoogleDrive.UploadFileToDrive(String fileName, String filePath, String contentType) in C:\Users\vanja\Documents\Projects\EPG Monitor\EPGMonitor\EPGMonitor\GoogleDrive.cs: EPGMonitor.Monitor 的第 73 行C:\Users\vanja\Documents\Projects\EPG Monitor\EPGMonitor\EPGMonitor\Monitor.cs: 51 行中的 .d__8.MoveNext()
【问题讨论】:
-
请发布完整的例外情况
-
这里有一个例外:System.NullReferenceException HResult=0x80004003 Message=对象引用未设置为对象的实例。 Source=EPGMonitor StackTrace: 在 EPGMonitor.GoogleDrive.UploadFileToDrive(String fileName, String filePath, String contentType) in C:\Users\vanja\Documents\Projects\EPG Monitor\EPGMonitor\EPGMonitor\GoogleDrive.cs: EPGMonitor.Monitor 的第 73 行.
d__8.MoveNext() 在 C:\Users\vanja\Documents\Projects\EPG Monitor\EPGMonitor\EPGMonitor\Monitor.cs:51 行 -
什么是 result.FirstOrDefault()
标签: c# google-api google-drive-api google-api-dotnet-client