Ця стаття започатковує цикл статей з використання Aspose.Cloud у застосунках на мові Python

При вирішенні завдань обробки документів ми часто стикаємося з проблемою отримання вихідних документів з різних джерел і від різних провайдерів. Aspose.Cloud Storage є компонентом платформи Aspose.Cloud, яка випускає прозорий інтерфейс для доступу до різних джерел. Тепер Aspose.Cloud Storage підтримує популярні сервіси Amazon, Dropbox, Google і Microsoft. Давайте подивимося, як ми можемо використовувати цей компонент.

Створення облікового запису Aspose.Cloud

  • Ми можемо створити безплатний обліковий запис Aspose.Cloud за допомогою посилання «Create a new Account» на Панелі Управління або увійти за допомогою облікового запису GitHub чи Google.

SignIn/SignUp Form

  • При реєстрації для кожного облікового запису створюється Aspose.Cloud Storage. Пізніше ми додаємо інше сховище, і тепер ми намагаємося отримати доступ до поточного сховища за допомогою Python. Для цього нам потрібно отримати облікові дані програми.

Отримання облікових даних застосунку

Вкладка Aspose.Cloud Application дозволяє нам керувати доступом до Cloud API. За замовчуванням кожен обліковий запис має одну програму під назвою «First App». За допомогою вкладки «My Apps» ми можемо переглянути список усіх програм, змінити налаштування або отримати облікові дані.

My Apps

Облікові дані програми (App SID/App Key) розміщуються безпосередньо на плитці «First App», але якщо ви хочете змінити налаштування «First App», просто натисніть на заголовок плитки. Для цілей тестування у нас достатньо налаштувань за замовчуванням, тому ми переходимо до наступного кроку, написання клієнтської програми. У цьому прикладі ми використаємо консольний додаток у Microsoft Visual Studio Code

Створення клієнтської програми

Щоб продемонструвати основну концепцію роботи хмарного сховища, ми напишемо програму, яка буде синхронізувати певну локальну папку з хмарною папкою з такою ж назвою. Отже, почнемо.

  1. Відкриємо нову папку (у VS Code File->Open Folder->(створимо папку PythonApplication1)->(оберемо папку);
  2. Встановимо пакет Aspose.PDF Cloud (в терміналі: pip install asposepdfcloud)

Налаштуйте клієнт API

Щоб мати можливість робити запити API, ми повинні ініціалізувати клієнт API. Це досить просто: оголосіть об’єкт StorageApi та ініціалізуйте його за допомогою AppKey і AppSID.

1import asposepdfcloud
2
3pdf_api_client = asposepdfcloud.ApiClient('MY_CLIENT_ID', 'MY_CLIENT_SECRET')
4pdf_api = asposepdfcloud.PdfApi(pdf_api_client)

Напишіть власний код за допомогою клієнта API

Ця частина нашого прикладу покаже використання найчастіших запитів API:

  • Перевірте, чи існує файл
  • Створити папку
  • Отримати список файлів
  • Завантажити файл у хмарне сховище

Варто зазначити, що всі методи StorageApi приймають об’єкт request і повертають об’єкт response. Усі об’єкти response мають спільні властивості, такі як Code і Status, і ми можемо використовувати їх, щоб перевірити, чи виклик API був успішним.

Відповідно до нашої задачі, нам потрібно синхронізувати певну локальну папку з хмарною папкою з такою ж назвою. Отже, спочатку ми повинні переконатися, що хмарна папка існує, інакше створіть її. Storage API надає методи object_exists і put_create_folder. Таким чином, перевіряючи, чи хмарна папка буде виглядати так:

 1folderName = "pdf-demo"
 2localFolder = "C:\\asposedemo\\pdf-demo\\";
 3
 4fileExistResponse = pdf_api.object_exists (folderName)
 5if (fileExistResponse.Code == 200):
 6    if (fileExistResponse.FileExist.IsFolder == False):
 7
 8        createFolderResponse = pdf_api.put_create_folder(folderName)
 9
10        if (createFolderResponse.Code != 200):
11            print("CreateFolder response is not OK!")
12            print(createFolderResponse)
13        else:
14            pass
15            # Write code here
16    else:
17        print("FileExist response response is not OK!")
18        print(fileExistResponse)

Наступним кроком ми готуємо список файлів для завантаження. Що ми будемо робити? Все просто: нам потрібно отримати список усіх файлів з локальної папки та список файлів у хмарі. Різниця цих списків дає нам список файлів, які потрібно завантажити.

Нарешті, ми викличемо put_create_document цикл через отриманий список.

{% gist https://gist.github.com/andruhovski/3062f6f3cefbb9aa6e73fb6bffeec177 %}

 1   folderName = "pdf-demo";
 2            var localFolder = $@"C:\asposedemo\{folderName}\";
 3            var fileExistResponse = _storageApi.GetIsExist(new GetIsExistRequest(folderName, null, storageName));
 4            if (fileExistResponse.Code == 200)
 5                if (fileExistResponse.FileExist.IsFolder == false)
 6                {
 7                    var createFolderResponse = _storageApi.PutCreateFolder(new PutCreateFolderRequest(folderName, null, storageName));
 8                    if (createFolderResponse.Code != 200)
 9                    {
10                        Console.WriteLine("CreateFolder response is not OK!");
11                        Console.WriteLine(createFolderResponse.ToString());
12                        return;
13                    }
14                }
15                else
16                {
17                    var filesResponse = _storageApi.GetListFiles(new GetListFilesRequest(folderName, storageName));
18                    if (filesResponse.Code == 200)
19                    {
20                        var filesInCloudFolder = filesResponse.Files.Where(f => f.IsFolder == false).Select(item => item.Name).ToList();
21                        var filesInLocalFodler = new DirectoryInfo(localFolder).GetFiles().Select(fi => fi.Name);
22                        foreach (var fileName in filesInLocalFodler.Except(filesInCloudFolder))
23                        {
24                            Console.WriteLine($"Uploading {fileName}");
25                            var fileStream = new FileStream($@"{localFolder}\{fileName}", FileMode.Open);
26                            var uploadResponse = _storageApi.PutCreate(new PutCreateRequest($"/{folderName}/{fileName}", fileStream));
27                        }
28                    }
29                }
30            else
31            {
32                Console.WriteLine("FileExist response response is not OK!");
33                Console.WriteLine(fileExistResponse.ToString());
34            }

Висновок

  • Q: Це односторонній синхронізатор?
  • A: Так. Він показав основні способи використання Aspose.Cloud Storage, і ви можете вдосконалити його самостійно.
  • Q: А як щодо інших сховищ??
  • A: Дізнайтеся більше в статті “How to Configure 3rd Party Cloud Storages”.
  • Q: Що далі?
  • A: У наступних публікаціях ми продовжимо працювати з функціями Aspose.Cloud.