【问题标题】:Get uploaded KB/MB value of uploaded file field in umbraco获取 umbraco 中上传文件字段的上传 KB/MB 值
【发布时间】:2018-07-27 11:39:49
【问题描述】:

尝试获取 umbraco 中已上传字段的已上传 KB/MB 值。

如果我们要获取项目的文件大小,但我想要上传字段@item.GetPropertyValue("uploadPDF") 的文件大小,下面的代码可以正常工作,我该怎么做?

    @foreach (var item in selection){

       // Get uploaded file size in MB
       var bytes = Convert.ToInt64(@item.GetPropertyValue<string>("umbracoBytes"));
       var x = ((Math.Round(Convert.ToDecimal(@bytes) / 1048576, 1)).ToString() + " MB");
       var y = ((Math.Round(Convert.ToDecimal(@bytes) / 1024, 1)).ToString() + " KB");
       var fileSize = (bytes >= 1048576) ? x : y;

       // Loop through items and iterate 
       var pdf = @item.GetPropertyValue("uploadPDF");

           <div class="full-div">
               <a href="@pdf" target="_blank">
                  <img src="/images/pdf_icon.png" alt="">
                    @item.Name (@fileSize) 
                    // Get the file size of the pdf field instead of the item field
               </a>
           </div>
         }

【问题讨论】:

  • 您能解释一下您的uploadPDF 属性所附加的媒体类型或文档类型的结构吗?如果它在媒体类型上(例如Image),那么它是在umbracoFile 属性之外的吗? umbracoBytes 属性实际上只适用于媒体类型,并且在 Umbraco 内部与 umbracoFile 属性一起使用。
  • 这是一个上传属性(Umbraco.UploadField),我正在上传PDF文档

标签: c# asp.net razor umbraco umbraco7


【解决方案1】:

如果您使用 Umbraco 中的内置媒体类型,只要您使用 FileImage 媒体类型,您就应该能够从 umbracoBytes 属性中获取大小。

不过,听起来您的属性是直接存在于文档类型上的 Umbraco.UploadField,这意味着它没有可用的文件大小。

在您的情况下,我会为您的类型添加一个名为:uploadPDFbytes 的属性,然后创建一个IApplicationHandler 并挂钩到Saving 事件。然后在保存存储 PDF 文件的内容时 - 我会确保此处理程序检查正在保存的文件的文件大小并将其放入 uploadPDFbytes 属性(非常类似于 Umbraco 对其自己的媒体上传所做的事情)。现在您可以通过检查uploadPDFbytes 属性来获取上传的PDF 的文件大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 2020-07-17
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多