示例#1
0
        public static async Task UploadFileAsync(string file, string parent)
        {
            // If modifying these scopes, delete your previously saved credentials
            // at ~/.credentials/drive-dotnet-quickstart.json
            string[]     Scopes          = { DriveService.Scope.Drive };
            const string ApplicationName = "Google Drive Uploader";

            UserCredential credential;

            using (var stream =
                       new FileStream(Config.Get("Google.JSON"), FileMode.Open, FileAccess.Read))
            {
                credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    Scopes,
                    "user",
                    CancellationToken.None);
            }

            // Create Drive API service.
            using (var service = new DriveService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = ApplicationName,
            }))
            {
                // Define parameters of request.
                var fileName = Path.GetFileName(file);
                var mimeType = MimeMapping.GetMimeMapping(file);
                var id       = service.FindIdByNameAndMimeType(fileName, mimeType, parent);
                if (id.IsNullOrEmpty())
                {
                    var body = new Google.Apis.Drive.v3.Data.File
                    {
                        Name        = fileName,
                        MimeType    = mimeType,
                        Description = string.Format("Last backuped at: {0}", DateTime.Now),
                        Parents     = new List <string>()
                        {
                            parent
                        },
                    };
                    using (var fileStream = new FileStream(file, FileMode.Open))
                    {
                        var request = service.Files.Create(body, fileStream, mimeType);
                        request.Upload();
                    }
                }
                else
                {
                    var body = new Google.Apis.Drive.v3.Data.File();
                    using (var fileStream = new FileStream(file, FileMode.Open))
                    {
                        var request = service.Files.Update(body, id, fileStream, mimeType);
                        request.Upload();
                    }
                }
            }
        }