Delphi.Datasnap. Как передать изображение на сервер? Direct Upload.

Этот метод, я назвал Direct Upload, потому что из всех способов передать файлы или изображения с клиента на сервер – он мне показался достаточно простым в реализации. Но есть несколько тонкостей, которые надо знать. Итак, в данной статье рассмотрим передачу файла на примере изображения.

Что делаем на сервере?

Вот список компонентов…

1

 

Настройку соединения сервера с СУБД опущу, так как она есть в других статьях. Настройку множества (в данном случае  SimpleDataSet1 тоже опущу) так как это тоже есть в статьях на моем блоге и других источниках.

Обращу внимание на настройку DataSetProvider1.

2

 

Обратите внимание на свойство Resolve to Data Set…  По сути, насколько я понял – при включении этой галочки – данные с клиента предварительно будут сохраняться на множестве сервера, а поскольку кэшировать умеют только SimpleDataSet и ClientDataSet из всего набора DBXpress, то был выбран SimpleDataSet, в том числе и для простоты.

Также в методах сервера нужно создать один метод – ApplyUpdates…

Что делаем на клиенте?

Обновим классы сервера на клиенте. Если ещё не сделали этого – появится новый модуль, который нужно будет подключить к модулю клиента. Если сделали – просто появятся обновления. В частности, нам нужен наш серверный метод ApplyUpdates…
2

 

Напишем вспомогательную функцию для загрузки картинки в память…

Далее, на кнопку DirectUpload повесим обработку…

Вот результат…
3

 

Общие рассуждения…

В принципе, метод работает достаточно хорошо, но все же, на мой взгляд, лучше поместить его в отдельный поток… TThread… Картинки до 3 МБ грузятся вполне хорошо…  А вот картинка в 6 мб. подвешивает систему.

Позже я собираюсь попробовать другую идею – делить файл / картинку на части и передавать её по частям.

This entry was posted in DataSnap, DBExpress, Delphi, Без рубрики. Bookmark the permalink.