Я следую документации и уже настроил свое приложение на облачном портале Google, создал свой идентификатор клиента OAuth и свою учетную запись службы, чтобы иметь возможность подключить его к моему приложению. При тестировании с использованием почтальона и моего идентификатора клиента я могу загружать файлы на свой диск, но имя файла не отправляется вместе с моим файлом. После некоторых попыток решить проблему, я решил перейти к реализации ее в приложении и вместо этого увидел, что на мой диск Google не загружается даже файл.
Следующий метод загрузки файлов:
Код: Выделить всё
public async Task DriveUploadBasic(string filePath) {
try {
// Load pre-authorized user credentials from the environment.
string keyPath = $"{Directory.GetCurrentDirectory()}\\googleapi1.json";
GoogleCredential credential = GoogleCredential.FromFile(keyPath)
.CreateScoped(DriveService.Scope.Drive)
.CreateScoped(DriveService.Scope.DriveFile);
// Create Drive API service.
var service = new DriveService(new BaseClientService.Initializer {
HttpClientInitializer = credential,
ApplicationName = "TestingApp1"
});
//service.HttpClient.Timeout = TimeSpan.FromMinutes(2);
// Upload file photo.jpg on drive.
var fileMetadata = new Google.Apis.Drive.v3.Data.File() {
Name = "test1.csv"
};
FilesResource.CreateMediaUpload request;
// Create a new file on drive.
using (var stream = new FileStream(filePath, FileMode.Open)) {
// Create a new file, with metadata and stream.
request = service.Files.Create(fileMetadata, stream, "text/csv");
request.Fields = "id";
var progress = await request.UploadAsync().ConfigureAwait(false);
if (progress.Status == UploadStatus.Failed) {
Log($"Upload failed: {progress.Exception}");
}
var file = request.ResponseBody;
//Log(request.ResponseBody.ToString());
// Prints the uploaded file id.
}
}
catch (Exception e) {
if (e is AggregateException) {
Log("Credential Not found");
}
else if (e is FileNotFoundException) {
Log("File not found");
}
else {
Log(e.Message);
}
}
}
В ходе отладки я получил следующие результаты:
- Соединение со службой создается, никаких исключений не создается.
- Идет чтение файла загрузки (все 882 байта).
- Мой запрос сообщает мне, что процесс завершен и что все 882 байта были отправлены
- Тело ответа предоставляет мне новый идентификатор, который должен быть идентификатором файла в моем диск.
- Хотя все выглядит хорошо, на моем диске нет файлов.
- мой поток выдает ошибку тайм-аута чтения и записи, но я не думаю, что это связано с чем-то, поскольку мой файл читается и все байты востребованы быть отправленным. Эта ошибка может быть связана с нестабильным подключением к Интернету.
Подробнее здесь: https://stackoverflow.com/questions/787 ... -connected