在单个aspx页面中出现多个Ajax AsyncFileUpload问题 [英] Issue with multiple Ajax AsyncFileUpload in a single aspx page
问题描述
大家好,
我在页面中使用两个AsyncFileUpload ...
如果我浏览OnClientUploadStarted事件中指定的正确格式,它可以正常工作。但是,如果我浏览错误的格式,它会显示警告,就像我在方法中提到的那样它会抛出错误,例如
服务器响应错误:''未知服务器错误''。
这是我的javascript代码
Hi all,
I am using two AsyncFileUpload in a page ...
It works fine if I browse the correct formats which is specified in the OnClientUploadStarted event. But if I browse the wrong formats, it shows alert as I mentioned in the method then it throws error like
"Server Response Error:''Unknown Server Error''.
Here is my javascript code
function uploadError(sender, args) {
try {
checkExtension(sender, args);
alert('Error: File not uploaded');
}
catch (e) {
// alert(e.message);
}
}
function checkExtension(sender, args) {
try{
var filename = args.get_fileName().toLowerCase();
var ext = filename.substring(filename.lastIndexOf(".") + 1);
if (ext != 'jpg' && ext != 'png' && ext != 'jpeg' && ext != 'gif') {
alert('Invalid File Type (Only .png, .gif and .jpg)');
return false;
}
else
return true;
}
catch (e) {
}
}
function uploadComplete(sender, args) {
try {
alert('File uploaded successfully');
}
catch (e) {
// alert(e.message);
}
}
<cc1:AsyncFileUpload
ID="AsyncFileUpload1"
runat="server"
OnUploadedComplete="AsyncFileUpload1_UploadComplete"
OnClientUploadComplete="uploadComplete"
OnClientUploadError="uploadError"
önClientUploadStarted="checkExtension"
CompleteBackColor="SkyBlue"
UploaderStyle="Traditional"
BackColor="IndianRed"
ErrorBackColor="Salmon" />
<cc1:AsyncFileUpload
ID="AsyncFileUpload2"
runat="server"
OnUploadedComplete="AsyncFileUpload2_UploadComplete"
OnClientUploadComplete="uploadComplete"
OnClientUploadError="uploadError"
önClientUploadStarted="checkExtension"
CompleteBackColor="SkyBlue"
UploaderStyle="Traditional"
BackColor="IndianRed"
ErrorBackColor="Salmon" />
其中cc1表示
where cc1 represents
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
如果我只使用一个Asnfileupload控件,它可以正常工作。但是使用多个控件并浏览到错误的文件格式会引发错误服务器响应错误:''未知服务器错误''。
任何帮助都将受到高度赞赏
If I use only one Asnfileupload control, it works fine. But using multiple controls and browsing to wrong file formats throws the Error "Server Response Error:''Unknown Server Error''.
Any help would be highly appreciated
推荐答案
我正在使用:
I am using:
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
用以下内容替换整个脚本:
Replace your entire script with following:
<script language="javascript" type="text/javascript">
function uploadError(sender, args) {
alert('Error: File not uploaded');
}
function checkExtension(sender, args) {
var filename = args.get_fileName().toLowerCase();
var ext = filename.substring(filename.lastIndexOf(".") + 1);
if (ext != 'jpg' && ext != 'png' && ext != 'jpeg' && ext != 'gif') {
alert('Invalid File Type (Only .png, .gif and .jpg)');
return false;
}
else
return true;
}
</script>
这是两个AsyncFileUpload控件的标记
This is the markup for two AsyncFileUpload controls
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" EnablePartialRendering="true"
CombineScripts="false">
</asp:ToolkitScriptManager>
<asp:AsyncFileUpload ID="AsyncFileUpload1" runat="server" OnUploadedComplete="AsyncFileUpload1_UploadComplete"
OnClientUploadError="uploadError" OnClientUploadStarted="checkExtension" CompleteBackColor="SkyBlue"
UploaderStyle="Traditional" BackColor="IndianRed" ErrorBackColor="Salmon" />
<asp:AsyncFileUpload ID="AsyncFileUpload2" runat="server" OnUploadedComplete="AsyncFileUpload2_UploadComplete"
OnClientUploadError="uploadError" OnClientUploadStarted="checkExtension" CompleteBackColor="SkyBlue"
UploaderStyle="Traditional" BackColor="IndianRed" ErrorBackColor="Salmon" />
这是代码隐藏:
This is the code-behind:
protected void AsyncFileUpload1_UploadComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
string FolderPath = Server.MapPath("./Documents") + "\\";
string FileName = AsyncFileUpload1.FileName;
string fileExtension = System.IO.Path.GetExtension(FolderPath + FileName);
if (fileExtension == ".jpg" || fileExtension == ".png" || fileExtension == ".jpeg" || fileExtension == ".gif")
{
AsyncFileUpload1.SaveAs(FolderPath + FileName);
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Success", "alert('File uploaded');", true);
}
}
protected void AsyncFileUpload2_UploadComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
string FolderPath = Server.MapPath("./Documents") + "\\";
string FileName = AsyncFileUpload2.FileName;
string fileExtension = System.IO.Path.GetExtension(FolderPath + FileName);
if (fileExtension == ".jpg" || fileExtension == ".png" || fileExtension == ".jpeg" || fileExtension == ".gif")
{
AsyncFileUpload2.SaveAs(FolderPath + FileName);
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Success", "alert('File uploaded');", true);
}
}
这对我来说很好。请注意,我使用的是AjaxControlToolkit 4.0 2013年1月发布。
This is working fine for me. Please note that I am using AjaxControlToolkit 4.0 January 2013 release.
这篇关于在单个aspx页面中出现多个Ajax AsyncFileUpload问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!