Google Drive API Загрузить на общий диск в C# - PullRequest
0 голосов
/ 21 апреля 2020

Я использую этот код для загрузки файла на Google Диск, и он правильно загружает ... на root Моего диска. Мне нужно, чтобы загрузить на общий диск _driveId. Что я здесь не так делаю?

    public string Add(GoogleDriveItem item)
    {
        FilesResource.CreateMediaUpload request;
        using (FileStream stream = new FileStream(item.LocalPath,
            FileMode.Open))
        {
            using (MemoryStream memoryStream = new MemoryStream())
            {
                stream.CopyTo(memoryStream);
                Google.Apis.Drive.v3.Data.File fileMetadata = new Google.Apis.Drive.v3.Data.File
                {
                    Name = Path.GetFileName(item.LocalPath),
                    MimeType = item.ContentType,
                    DriveId = _driveId,
                    TeamDriveId = _driveId
                };
                request = _service.Files.Create(
                    fileMetadata, memoryStream, item.ContentType);
                request.Fields = "id";
                request.SupportsTeamDrives = true;
                request.SupportsAllDrives = true;
                request.Upload();
            }
        }
        Google.Apis.Drive.v3.Data.File file = request.ResponseBody;
        return file.Id;
    }

Я пытался добавить Parents = { _driveId} к свойствам fileMetaData, но затем я получаю исключение нулевой ссылки. (

1 Ответ

1 голос
/ 21 апреля 2020

Хотя я не знаю, будет ли это на самом деле работать, это исправит NPE:

Parents = new[] { _driveId }

В основном клиентские библиотеки REST не создают пустые списки по умолчанию, поэтому Parents равно нулю пока вы не дадите ему значение - но это просто IList<string>, поэтому с массивом все должно быть в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...