Идентификаторы папок и файлов находятся в конце URL-адреса на Google Диске.
Private ReadOnly GoogleDriveScopes As String() = {DriveService.Scope.Drive}
Private ReadOnly SharedDriveId As String = "{the ID for the shared drive goes here}"
Private Function CreateGoogleDriveService() As DriveService
Dim credential As GoogleCredential
Using stream = New FileStream("credentials.json", FileMode.Open, FileAccess.Read)
credential = GoogleCredential.FromStream(stream).CreateScoped(GoogleDriveScopes)
End Using
Return New DriveService(New BaseClientService.Initializer() With {
.HttpClientInitializer = credential,
.ApplicationName = "My App"
})
End Function
Private Function CreateGoogleDriveFolder(service As DriveService, folderName As String) As String
Dim fileMetadata = New Google.Apis.Drive.v3.Data.File() With {
.Name = folderName,
.MimeType = "application/vnd.google-apps.folder",
.DriveId = SharedDriveId ,
.Parents = New List(Of String)() From {
"{the ID of the sub folder goes here or remove parents if no sub folder}"
}
}
Dim file = service.Files.Create(fileMetadata)
file.Fields = "id"
file.SupportsAllDrives = True
Return file.Execute().Id
End Function
Private Function GetGoogleDriveFiles(service As DriveService, folderName As String) As List(Of Google.Apis.Drive.v3.Data.File)
Dim files As List(Of Google.Apis.Drive.v3.Data.File) = New List(Of Google.Apis.Drive.v3.Data.File)()
Dim listRequest As FilesResource.ListRequest = service.Files.List()
listRequest.Q = "mimeType='application/vnd.google-apps.folder' and name = '" & folderName & "'"
listRequest.Fields = "files(id, name)"
listRequest.Corpora = "drive"
listRequest.DriveId = SharedDriveId
listRequest.SupportsAllDrives = True
listRequest.IncludeItemsFromAllDrives = True
For Each file In listRequest.Execute().Files
files.Add(file)
Next
Return files
End Function
Private Function GetGoogleDriveFolder(service As DriveService, folderName As String) As String
Dim listRequest As FilesResource.ListRequest = service.Files.List()
listRequest.Q = "mimeType='application/vnd.google-apps.folder'"
listRequest.Fields = "files(id, name)"
listRequest.Corpora = "drive"
listRequest.DriveId = SharedDriveId
listRequest.SupportsAllDrives = True
listRequest.IncludeItemsFromAllDrives = True
Dim files As List(Of Google.Apis.Drive.v3.Data.File) = listRequest.Execute().Files
If files IsNot Nothing Then
Dim foundFolder As Google.Apis.Drive.v3.Data.File = files.Where(Function(w) w.Name = folderName).FirstOrDefault()
If foundFolder IsNot Nothing Then
Return foundFolder.Id
End If
End If
Return CreateGoogleDriveFolder(service, folderName)
End Function
Private Function UploadFileToGoogleDrive(service As DriveService, filePath As HttpPostedFile) As Boolean
Dim folderName As String = GetGoogleDriveFolder(service, Quote)
If Not String.IsNullOrWhiteSpace(folderName) Then
Try
Dim fileMetadata As New Google.Apis.Drive.v3.Data.File With {
.Name = filePath.FileName,
.MimeType = filePath.ContentType,
.Parents = New List(Of String)() From {
folderName
}
}
Dim mediaUpload As FilesResource.CreateMediaUpload = service.Files.Create(fileMetadata, filePath.InputStream, filePath.ContentType)
mediaUpload.SupportsAllDrives = True
mediaUpload.Upload()
Return True
Catch ex As Exception
Throw ex
End Try
End If
Return False
End Function
Protected Sub UploadDocumentButton_Click(sender As Object, e As EventArgs) Handles UploadDocumentButton.Click
If FileUpload1.HasFiles AndAlso Not String.IsNullOrEmpty(Quote) Then
Dim service = CreateGoogleDriveService()
For Each myFile As HttpPostedFile In FileUpload1.PostedFiles
If myFile.ContentLength > 0 Then
Try
If UploadFileToGoogleDrive(service, myFile) Then
lblGoogleDriveMessage.Text = "File uploaded to Google Drive"
End If
Catch ex As Exception
lblGoogleDriveMessage.Text = ex.Message
Return
End Try
End If
Next
End If
End Sub
учетные данные. json файл (... замените учетными данными вашей учетной записи)
{
"type": "service_account",
"project_id": " ... ",
"private_key_id": " ... ",
"private_key": "-----BEGIN PRIVATE KEY-----\n ... \n-----END PRIVATE KEY-----\n",
"client_email": " ... .gserviceaccount.com",
"client_id": " ... ",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/ ... .gserviceaccount.com"
}