C# 上传无效文件时,Telerik RadAsyncUpload UploadedFile Count为0
您好,我使用的是C# 上传无效文件时,Telerik RadAsyncUpload UploadedFile Count为0,c#,asp.net,C#,Asp.net,您好,我使用的是TelerikRadAsyncUpload,我保留了一个过滤器,。仅允许使用csv文件 在设计器中: <telerik:RadAsyncUpload ID="RadAsyncUpload1" runat="server" EnableInlineProgress="true" UploadedFilesRendering="BelowFileInput" HideFileInput="true" ClientIDMode="AutoID" Multipl
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,现在用户显示消息:文件是必需的
场景2:当给出非.csv文件时,仍然RadAsyncUpload1.UploadedFiles.Count
返回0,现在用户显示消息:只允许csv文件。
问题1:我如何才能做到这一点
问题2:如何使RadAsyncUpload1显示文件上载对话框窗口的过滤器仅显示
其他(*.csv)而不是所有文件(*.*)…等
因此,在选择时,文件系统中只显示.csv。RadAsyncUpload会阻止上载无效文件。您需要执行客户端验证来设置适当的消息,因为当它到达服务器时,文件不在那里,因为它不是CSV。看看Telerik在 它们甚至提供了一个示例来查看文件扩展名是否在允许的列表中 编辑:要从数据库中获取错误字符串,可以添加如下内容
var badFileName = '<asp:Literal runat="server" ID="litBadFileName" />';
var noFile = '<asp:Literal runat="server" ID="litNoFile" />';
var badFileName='';
var noFile='';
然后在从数据库加载的页面上填充这两个文本。您好,谢谢您的支持 问题1答案: 我明白了,我删除了designer和代码隐藏中允许的文件扩展
<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>
完成了!!!:-)享受..从XAML中删除过滤器,并在代码隐藏中检查文件是否为CSV类型,然后显示消息。如果您正确使用过滤器值,您应该只能上载.CSV文件,因为它在上述代码中,我希望是有效值,但无法实现!!!!在filter
Text Files(*.csv)|*.csv
Hi user2526236中尝试此选项,我尝试了FileFilters=“Text Files(*.csv)|*.csv”进行RadAsyncUpload,但没有使用文件上传对话框中的“仍然过滤”弹出窗口显示所有文件(**)您对此有何看法?我从未使用过他们的WPF/Silverlight控件,正如您所注意到的,这只是标记为C#。您好dman2306,非常感谢您的回复,但我从数据库中获得了验证消息,我的应用程序与语言无关。那么,有没有可能在服务器端进行验证呢?好主意,仍然可行。我要做的是在Page_Load或类似事件中从数据库获取错误消息,并将它们存储在JavaScript变量中。然后你可以设置一个合适的。好的,我会在这里发帖让你知道。嗨,dman2306,我能在客户端获得同样的功能吗?反之亦然??i、 我正在删除设计器和代码隐藏中允许的文件扩展名。现在,颜色指示始终为绿色。现在我可以检查客户端的.csv扩展名了吗?对于非.csv文件,我可以将该扩展名改为红色吗?
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");
}
}
}
function OnClientAdded(sender, args) {
document.getElementById($('input[type=file]').attr('id')).accept = ".csv";
}