我的问题是使用Google Drive API通过Visual Basic .NET下载文件。当我使用FileStream时,它会创建文件,但不会完全下载它。看起来是0MB。我想使用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应用程序提供帮助?
答案 0 :(得分:0)
方法Downloader.DownloadAsync()
需要使用URL而不是文件ID。检查以下有关如何从文件ID获取Google云端硬盘上文件的URL的信息。
webContentLink
和exportLinks
,您可以通过列出文件并在参数字段中指定这些属性来获取它们。getDownloadUrl()
。您必须测试其中哪些链接适用于您的应用程序。
答案 1 :(得分:0)
我不想通过URL下载。我已经找到带有FileID的文件并进行下载过程。以下代码仅允许我将10MB的文件下载到桌面(http://prntscr.com/ocpd7x)。相同的文件Google云端硬盘为350MB。如何下载整个文件?代码中的错误在哪里?
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)