Kentico - Вложение в поле файла BizForm / URL загрузки

Для поля типа BizForm File используя Upload file контроль, записанные данные отправки для поля сохраняются в виде строки, аналогичной значению a858eda6-4699-4bda-81d0-1b85d69aa9a7.pdf/test.pdf для PDF с именем test.pdf с полем с кодовым именем Foo, Я пытаюсь получить URL для этого загруженного документа для данной отправки BizForm. Попытка получить доступ к вложению с использованием следующих URL приводит к 404 ошибкам:

https://somesite.com/getattachment/a858eda6-4699-4bda-81d0-1b85d69aa9a7.pdf/test.pdf
https://somesite.com/getattachment/a858eda6-4699-4bda-81d0-1b85d69aa9a7.pdf/test.pdf.aspx
https://somesite.com/CMSPages/GetFile.aspx?guid=a858eda6-4699-4bda-81d0-1b85d69aa9a7

Как можно создать URL-адрес для доступа к данному представлению BizForm File поле, которое использует Upload file управление для поля с кодовым именем Foo? И / или как можно получить доступ из кода, если я знаю идентификатор представления BizForm в чем-то вроде BizFormItemEvents.Insert.After обработчик.

Спасибо за любую помощь, которую вы можете предоставить.

1 ответ

Решение

Попробуйте https://somesite.com/CMSPages/GetBizFormFile.aspx?filename=a858eda6-4699-4bda-81d0-1b85d69aa9a7.pdf

Вы можете попробовать макрос как:

{%  
row = Siteobjects.Forms["FormCodeName"].Items.Where("ItemId = 123").FirstItem;
row["attachmentFieldname"]
#%}

Вот старая ссылка для работы с файлами форм biz, большая часть которой все еще действует. это даст некоторые идеи. Вот ссылка на GetBizFormFile.aspx.cs

Используя API это должно быть довольно просто:

var filepath =  BizFormItemProvider.GetItems(formClassName)
.Where("itemid = 123")
.AsEnumerable().FirstOrDefault().GetValue("FileField")    

Вы получите тот же формат: <GUID>.<extension>/<orig_name>.<extension>, Затем вы можете разобрать и сделать из него URL ~/CMSPages/GetBizFormFile.aspx?filename=<GUID>.<extension>

Другие вопросы по тегам