Kentico - BizForm 文件字段 Attachment/Upload URL

Kentico - BizForm File Field Attachment/Upload URL

对于使用 Upload file 控件的 File 类型的 BizForm 字段,字段的记录提交数据被保存为类似于 a858eda6-4699-4bda-81d0-1b85d69aa9a7.pdf/test.pdf 值的字符串名称为 test.pdf 的 PDF,其字段的代码名称为 Foo。我正在尝试获取给定 BizForm 提交的上传文档的 URL。尝试使用以下 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 字段,该字段使用代码名称为 Foo 的字段的 Upload file 控件? And/or 如果我在 BizFormItemEvents.Insert.After 处理程序之类的东西中知道 BizForm 提交的 ID,如何从代码后面访问。

感谢您提供的任何帮助。

试试看 https://somesite.com/CMSPages/GetBizFormFile.aspx?filename=a858eda6-4699-4bda-81d0-1b85d69aa9a7.pdf

你可以试试这样的宏:

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

这是一个旧的 link 到 work with biz form files, most of it is still valid. it will give some ideas. Here is a link to 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>