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>