Загрузка файлов с использованием VB.net - PullRequest
1 голос
/ 01 апреля 2020

Я пытаюсь написать простой пример, позволяющий загружать файлы с моего диска Google с помощью VB. net

Я пытался перевести код C#, но получаю пару ошибки, которые я не могу решить.

Любая помощь будет с благодарностью получена

Вот мой код

Private Sub Download()

    Dim storageService = New StorageService(New BaseClientService.Initializer() With {.HttpClientInitializer = credential, .ApplicationName = "APP_NAME_HERE"})
    Dim getRequest = storageService.Objects.[Get]("BUCKET_HERE", "OBJECT_HERE")

    Using fileStream = New System.IO.FileStream("FILE_PATH_HERE", System.IO.FileMode.Create, System.IO.FileAccess.Write)
        getRequest.MediaDownloader.ProgressChanged += Download_ProgressChanged()
        getRequest.Download(fileStream)
    End Using
End Sub
Private Shared Sub Download_ProgressChanged(ByVal progress As IDownloadProgress)
    Console.WriteLine(progress.Status & " " + progress.BytesDownloaded)
End Sub

Ошибки в том, что StorageService не распознается и не IDownloadProgress.

У меня есть все операторы Include, и я могу войти, используя свои учетные данные в другой области кодаS

1 Ответ

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

Ответ:

Код, который вы используете, не предназначен для загрузки файлов с Google Диска; это для получения файлов из Google Cloud Storage.

Дополнительная информация:

После просмотра вашего вопроса я понял, что вы пытаетесь перевести код, который загружает данные из Google Cloud Storage , а не с Google Диска. Это не одно и то же, и одно нельзя использовать для другого. Здесь я предоставлю исправления для вашего кода и способы аутентификации на Google Диске с использованием VB. NET *.

Также стоит отметить, что в зависимости от того, хотите ли вы загрузить собственный файл Google Диска (Docs / Sheets / Slides / et c) или просто файл, сохраненный там, так как собственные файлы Google Диска не могут быть загружены напрямую, и должны быть экспортированы в формат, совместимый с загрузкой, такой как .docx или .csv.

Исправления кода для Google Cloud Storage:

В качестве компиляции того, что уже упоминалось в комментариях выше, вам не хватает двух импортов для методов в вашем коде:

Imports Google.Apis.Storage.v1
Imports Google.Apis.Download

Как вы и просили; BUCKET_HERE и OBJECT_HERE - это корзины и объектов из Google Cloud Storage - это соответственно контейнеры для данных и сами фрагменты данных.

Загрузка файл с Google Диска:

Для загрузки с Google Диска, а не с Google Cloud Storage, вам нужно использовать Google Drive API .

Google предоставляет Быстрый старт на как настроить проект для .NET framework , но их пример специально для C#. Для. NET Drive Library имеется полная библиотека документации, которую можно найти здесь . Однако основными интересными страницами являются:

  1. Ссылка на класс Google.Apis.Drive.v3.FilesResource
  2. GetRequest Ссылка на класс
  3. ExportRequest Ссылка на класс

Фрагмент кода:

Для начала вот фрагмент кода, включающий импорт и создание Служба накопителей:

Imports Google.Apis.Auth.OAuth2
Imports Google.Apis.Drive.v3
Imports Google.Apis.Drive.v3.Data
Imports Google.Apis.Services
Imports Google.Apis.Util.Store
Imports System.IO
Imports System.Threading

Module Module1
    Dim Scopes() As String = {DriveService.Scope.Drive}
    Dim ApplicationName As String = "Your-Application-Name"
    Private Service As DriveService = New DriveService

    Public Sub Main()
        Dim creds As UserCredential
        'Store your credentials file in the project directory as 'credentials.json'
        'Don't forget to include it in your project
        Using Stream = New FileStream("credentials.json", FileMode.Open, FileAccess.Read)
            'Creates a token file for this auth, make sure to delete it and re-auth 
            'if you change scopes
            Dim credentialFile As String = "token.json"
            creds = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(Stream).Secrets,
                    Scopes,
                    "user",
                    CancellationToken.None,
                    New FileDataStore(credentialFile, True)).Result
            Console.WriteLine("Credentials saved to: " + credentialFile)

        End Using
        'Create Drive API service.
        Dim Service = New DriveService(New BaseClientService.Initializer() With
            {
                .HttpClientInitializer = creds,
                .ApplicationName = ApplicationName
            })
        'Define parameters of request here, depending on whether you need to use
        'the get or export methods
        Dim fileId As String = "your-file-id"

        'File processing goes here!
    End Sub
End Module

Посмотрите на Quickstart, чтобы понять, как настроить проект и получить свои учетные данные.

Надеюсь, это полезно для вас!

Ссылки:

...