Загрузка файла на Google Диск с помощью Visual Basic - PullRequest
0 голосов
/ 02 октября 2019

Я бы хотел использовать приложение Visual Basic Desktop для загрузки файла на Google Drive. Основная цель приложения заключается в гораздо большем, но мне нужно добавить эту функцию, экономящую время:

Я скачал NuGet для Google.Apis.Drive.v2 и добавил следующий код:

Imports Google.Apis.Auth.OAuth2
Imports Google.Apis.Drive.v2
Imports Google.Apis.Drive.v2.Data
Imports Google.Apis.Services

У меня есть кнопка для вызова моего кода:

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    CreateService()
    UploadFile(myFile)
End Sub

А затем у меня есть код для создания службы и загрузки файла:

Private Sub CreateService()

    Dim ClientId = "My ClientID copied from Google"
    Dim ClientSecret = "My Client Secret"   

    Dim MyUserCredential As UserCredential = _
    GoogleWebAuthorizationBroker.AuthorizeAsync(New ClientSecrets() _
    With {.ClientId = ClientId, .ClientSecret = ClientSecret}, _
    {DriveService.Scope.Drive}, "user", CancellationToken.None).Result 

    Service = New DriveService(New BaseClientService.Initializer() _
    With {.HttpClientInitializer = MyUserCredential, .ApplicationName = "SiteVisitTool"})

End Sub

Private Sub UploadFile(FilePath As String)
    Me.Cursor = Cursors.WaitCursor
    If Service.ApplicationName <> "SiteVisitTool" Then CreateService()

    Dim TheFile As New Google.Apis.Drive.v2.Data.File
    TheFile.Title = "Deliverables"
    TheFile.Description = "Site Visit data for Google forms"
    TheFile.MimeType = "text/csv"

    Dim ByteArray As Byte() = System.IO.File.ReadAllBytes(FilePath)
    Dim Stream As New System.IO.MemoryStream(ByteArray)

    Dim UploadRequest As FilesResource.InsertMediaUpload = Service.Files.Insert(TheFile, Stream, TheFile.MimeType)

    Me.Cursor = Cursors.Default
    MsgBox("Upload Finished")

End Sub

Кодзапускается, и я получаю сообщение о том, что загрузка завершена. Я проверил диск, и файл не существует. Иногда меня запрашивают учетную запись, которую я хочу использовать, и затем я должен активировать ее, но я всегда получаю сообщение, что она загружена. Очень разочарован!

"SiteVisitTool" - это название проекта в Google.

Должно ли это быть просто в корневой папке диска?

ТакжеЕсли мы сможем решить эту проблему, я хотел бы продолжить и сохранить ее в определенной папке.

1 Ответ

0 голосов
/ 03 октября 2019

Это оказалось простым исправлением. Видимо на сайте, с которого я получил это решение, отсутствовала строка загрузки. Поэтому после создания запроса на загрузку необходимо указать его для загрузки.

Dim UploadRequest As FilesResource.InsertMediaUpload = Service.Files.Insert(TheFile, Stream, TheFile.MimeType)
UploadRequest.Upload()

Что касается указания папки для загрузки, я добавил, где я установил свойства TheFile:

TheFile.Parents = New List(Of ParentReference)() From {
            New ParentReference() With {
                .Id = sFolderID
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...