代码之家  ›  专栏  ›  技术社区  ›  Alexander Staroselsky

Kentico-BizForm文件字段附件/上载URL

  •  1
  • Alexander Staroselsky  · 技术社区  · 7 年前

    对于类型为的BizForm字段 File 使用 Upload file 控件时,字段的记录提交数据将保存为类似于值的字符串 a858eda6-4699-4bda-81d0-1b85d69aa9a7.pdf/test.pdf test.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提交的 文件 上传文件 ? 和/或如果我知道BizForm提交的ID,如何从代码隐藏中访问 BizFormItemEvents.Insert.After 处理程序。

    谢谢你的帮助。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Peter Mogilnitski    7 年前

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

    您可以尝试以下宏:

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

    这里有一个旧的链接 work with biz form files ,大部分仍然有效。它会给你一些想法。这里有一个链接 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>