Google Drive API как скачать файл vb.net - PullRequest
0 голосов
/ 08 июля 2019

Моя проблема связана с загрузкой файлов с помощью Visual Basic .NET с использованием Google Drive API.Когда я использую FileStream, он создает файл, но не загружает его полностью.Это выглядит 0 МБ.Я хочу сделать загрузку с помощью FileID.Не по URL.

Где ошибка моего кода?

Me.Cursor = Cursors.WaitCursor
If Service.ApplicationName <> "vbNETDriveTools" Then CreateService()
Dim Downloader = New MediaDownloader(Service)
Downloader.ChunkSize = 256 * 1024
Dim fileid1 = "DriveFileID"
Dim Request1 = Service.Files.Get(fileid1)
Dim Results = Request1.Execute()
Dim filename = "C:\Users\XXX\Desktop\" & Results.OriginalFilename
Using Stream = New FileStream(filename, FileMode.Create, FileAccess.Write)
    Dim Progress = Downloader.DownloadAsync("which url should I write", Stream)
    Threading.Thread.Sleep(1000)
    Do While Progress.Status = TaskStatus.Running
    Loop
    If Progress.Status = TaskStatus.RanToCompletion Then
        MsgBox("Download Complete!")
    Else
        MsgBox("Download Failed :(")
    End If
End Using
Me.Cursor = Cursors.Default

Существуют ли примеры кодов, которые вы можете использовать в качестве приложения Windows Form?

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Я не хочу скачивать его по URL. Я уже нахожу файл с FileID и делаю процесс загрузки. Следующий код позволяет мне загружать только 10 МБ файлов на рабочий стол (http://prntscr.com/ocpd7x). Этот же файл на Google Диске составляет 350 МБ. Как загрузить весь файл? Где в коде ошибка?

If Service.ApplicationName <> "vbNETDriveTools" Then CreateService()
Dim fileid As String = "1PVsSbS5qEhuMEtDPeuPsvA_eBDy_XX_C"
Dim Request = Service.Files.Get(fileid)
Dim Results = Request.Execute()
Dim Downloader = New MediaDownloader(Service)
Dim filename = "C:\Users\XXX\Desktop\" & Results.OriginalFilename
Dim Stream As System.IO.FileStream = New FileStream(filename, FileMode.Create, FileAccess.Write)
AddHandler Request.MediaDownloader.ProgressChanged, AddressOf ProgChanged
Request.DownloadAsync(Stream)
0 голосов
/ 09 июля 2019

Метод Downloader.DownloadAsync() требует использования URL-адреса вместо идентификатора файла.Проверьте следующую информацию о том, как получить URL-адрес из fileID для файла на Google Диске.

  1. В ответе на аналогичный вопрос по stackoverflow рекомендуется создать ссылку для экспорта в виде: https://www.googleapis.com/drive/v3/files/fileIdxxxxx/export&mimeType=xxxxx/xxxxx. Убедитесь, что URL-адрес кодирует тип MIME.
  2. В документации по Google Drive Api описаны свойства webContentLink и exportLinks, которые можно получить, перечисливфайлы и указание этих свойств в полях параметров.
  3. В скрипте приложения есть метод getDownloadUrl().

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

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