您好我正在使用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。
答案 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上的这两个文字。