click fraud detection

Загрузка и скачивание файлов в AX7

Дата публикации: 10.01.2018

Dynamics AX – это веб-приложение, работающее в облаке, но как пользователи могут работать с файлами в такой среде? Ответ прост: так же, как и с другими веб-приложениями. Если вы знаете, как добавлять и загружать вложения в своём клиенте электронной почты, то вы сможете с лёгкостью сделать то же и в AX7.

Тем более это должно быть очень просто для разработчиков.

Давайте я покажу на своей простой форме.

Когда вы нажимаете кнопку Upload, открывается диалог, в котором вы можете выбрать и загрузить файл со своего компьютера. Этот контрол даже показывает прогресс загрузки.

Загрузка запускается всего одной строчкой: File::GetFileFromUser(). Вам не надо беспокоиться больше ни о чём. По умолчанию, файл загружается во временное хранилище и может быть доступен по не очень красивой ссылке вроде этой:

Если вы нажмёте кнопку Download, вас перенаправит на адрес файла, а браузер выполнит всё остальное:

Для кнопки Download код опять же всего лишь в одну строчку: new Browser().navigate(fileUrl).

Ниже представлен весь код, также показывающий каким образом, можно получить URL адрес загруженного файла:

[Form] <span style="color:#0000CD;">public class</span> UploadDownloadForm <span style="color:#0000CD;">extends</span> FormRun { &nbsp;&nbsp;&nbsp; <span style="color:#0000CD;">str </span>fileUrl;
  1. &nbsp;&nbsp;&nbsp; [Control("<span style="font-family: Verdana; color: rgb(255, 0, 0);">Button</span><span style="font-family: Verdana;">")]</span>
&nbsp;&nbsp;&nbsp; <span style="color:#0000CD;">class</span> UploadButton &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000CD;"> public void</span> clicked() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileUploadTemporaryStorageResult result = File::GetFileFromUser() as FileUploadTemporaryStorageResult; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:#0000CD;">if</span> (result &amp;&amp; result.getUploadStatus()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fileUrl = result.getDownloadUrl(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; info(fileUrl); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; }

 

&nbsp;&nbsp;&nbsp; [Control("<span style="color:#FF0000;">Button</span>")]
  1. &nbsp;&nbsp;&nbsp; <span style="color:#0000CD;">class</span> DownloadButton
  2. &nbsp;&nbsp;&nbsp; {
  3. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: Verdana; color: rgb(0, 0, 205);"> public void</span><span style="font-family: Verdana;"> clicked()</span>
  1. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
  2. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: Verdana; color: rgb(0, 0, 205);">new </span><span style="font-family: Verdana;">Browser().navigate(fileUrl);</span>
  1. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
  2. &nbsp;&nbsp;&nbsp; }
}

Обычно ваши файлы недоступны по URL адресу, т.к. они хранятся в базе или в защищённом хранилище. Но это совсем не проблема. Просто загружайте содержимое вашего файла в stream и передавайте его в File::SendFileToUser(). Система поместит файл во временное хранилище и перенаправит на адрес файла, далее пользователь сможет загрузить файл, как и в примере выше.

 

Данный материал представлен в виде перевода.

Оригинальная статья по ссылке.

 

Акция "Тест-драйв Сопровождения"

Попробуй сопровождение АХ до подписания договора!


Узнать подробнее

Другие записи в блоге

22.11.2017
17.11.2017
Модуль «Сводное планирование» / «Журналы» / «Резервный запас» / «Строки» / кн. «Строки журнала» / «Создать строки».1. Вычисляется количество месяцев (numOfMonth) между датой начала и датой конца...
18.10.2017
Какую цену вы бы заплатили, чтобы иметь возможность делать так в X ++?for (int i = 1; i <= n; i++)   {}    Или так:

Подпишитесь на блог

Все интересные статьи нашего блога на Вашем почтовом ящике!


Подписка

Служба контроля качества сервиса

Свои пожелания и отзывы о качестве обслуживания Вы можете оставить в разделе


Письмо директору