Telerik RadAsyncUpload UploadedFile Count在上传无效文件时给出0

时间:2015-04-21 15:49:35

标签: c# asp.net

您好我正在使用Telerik RadAsyncUpload,我保留了一个仅允许.csv个文件的过滤器。

在设计师中:

<telerik:RadAsyncUpload ID="RadAsyncUpload1" runat="server" 
    EnableInlineProgress="true" UploadedFilesRendering="BelowFileInput" 
    HideFileInput="true" ClientIDMode="AutoID" MultipleFileSelection="Disabled"
    Localization-Select="Choose File" Width="100%"
    AllowedFileExtensions=".csv,.CSV" AllowedMimeTypes="application/csv"
    Filter="Others(*.csv;*.CSV)|*.csv;*.CSV" 
    MaxFileInputsCount="1">
    <FileFilters>
        <telerik:FileFilter Description="Others(*.csv;*.CSV)|*.csv;*.CSV"
            Extensions=".csv,.CSV" />
    </FileFilters>
    <Localization Select="Choose File" />
</telerik:RadAsyncUpload>

在代码背后:

var csv = new[] { ".csv" };
rauploadCSVFile.AllowedMimeTypes = csv;
rauploadCSVFile.AllowedFileExtensions = csv;

上传的.csv文件为绿色,非.csv文件为红色时的颜色指示 - 好的,我这里没有问题。

但是当上传非.csv文件时,RadAsyncUpload1.UploadedFiles.Count返回0,这里的真相是上传了1个无效文件(非.csv文件),这意味着count必须为1。

这里我处于一个场景中:

方案1:当没有给出文件时RadAsyncUpload1.UploadedFiles.Count返回0,现在用户显示消息:File is mandatory

方案2:当非.csv文件被提供时仍然 RadAsyncUpload1.UploadedFiles.Count返回0,现在用户显示消息:Only CSV files are allowed.

问题1:如何实现这一目标?

问题2:如何使RadAsyncUpload1显示“文件上载”对话框窗口的过滤器仅显示 其他(* .csv)而不是所有文件(*。*),..等

这样在选择文件系统时只显示.csv。

2 个答案:

答案 0 :(得分:1)

大家好,感谢您的支持..

问题1答案: 我想通了,我删除了设计师和代码中的AllowedFileExtensions

<telerik:RadAsyncUpload ID="RadAsyncUpload1" runat="server" EnableInlineProgress="true" 
        UploadedFilesRendering="BelowFileInput" HideFileInput="true" ClientIDMode="AutoID" 
    MultipleFileSelection="Disabled" Localization-Select="Choose File" 
    Width="100%" MaxFileInputsCount="1"
 OnClientFileSelected="OnClientFileSelected" OnClientAdded="OnClientAdded">
<Localization Select="Choose File" /> </telerik:RadAsyncUpload>

现在添加活动

  

OnClientFileSelected =&#34; OnClientFileSelected&#34;

我在客户端维护这些颜色指示。那些颜色指示不是颜色,它们是通过类应用的.png图像。

classname(color).extensionused

ruUploadProgress(orange).gif

ruUploadFailure(红色).png

ruUploadSuccess(绿色).png

function OnClientFileSelected(sender, args) 
    {
        var fileExtention = args.get_fileName().substring(args.get_fileName().lastIndexOf('.') + 1, args.get_fileName().length);
        if (args.get_fileName().lastIndexOf('.') != -1)
        {
          var colorSpan = $('#<%=RadAsyncUpload1.ClientID%> ul li span span');
                            //checks if the extension is correct
          if (fileExtention.toLowerCase() == "csv")
          {
             colorSpan.removeClass("ruUploadFailure").addClass("ruUploadSuccess");
          }
          else
          {
             colorSpan.removeClass("ruUploadSuccess").addClass("ruUploadFailure");
          }
        }
    }

问题2答案:

我也为此找到了解决方案,只需添加事件 OnClientAdded =&#34; OnClientAdded&#34;

现在在Java Script Add函数中:

function OnClientAdded(sender, args) {
    document.getElementById($('input[type=file]').attr('id')).accept = ".csv";
}

它完成了.. !!! :-)享受..

答案 1 :(得分:0)

RadAsyncUpload阻止上传无效文件。您将需要进行客户端验证以设置相应的消息,因为当它到达服务器时,文件不存在,因为它不是CSV。在http://www.telerik.com/help/aspnet-ajax/asyncupload-onclientvalidationfailed.html

查看Telerik的文档

他们甚至提供了查看文件扩展名是否在允许列表中的示例。

编辑:要从数据库中获取错误字符串,可以添加类似

的内容
var badFileName = '<asp:Literal runat="server" ID="litBadFileName" />';
var noFile = '<asp:Literal runat="server" ID="litNoFile" />';

然后从数据库中填充Page_Load上的这两个文字。