C# Ajax AsyncFileUpload上载控制多次上载文件
我一整天都在努力解决这个问题,到目前为止,我一点运气都没有。我有一个Web表单,它有一些asp.net表单控件和两个AsyncFileUpload控件。当我使用第一个AsyncFileUpload1上载图像时,它只上载一个图像;当我使用AsyncFileUpload2上载第二个图像时,它上载同一图像的两个版本 当我点击Save按钮保存数据,然后上传3个或更多版本的图片时,事情变得疯狂起来。我尝试了不同的方法,最终放弃了 HTML文件中的示例代码C# Ajax AsyncFileUpload上载控制多次上载文件,c#,asp.net,asp.net-ajax,c#-3.0,asyncfileupload,C#,Asp.net,Asp.net Ajax,C# 3.0,Asyncfileupload,我一整天都在努力解决这个问题,到目前为止,我一点运气都没有。我有一个Web表单,它有一些asp.net表单控件和两个AsyncFileUpload控件。当我使用第一个AsyncFileUpload1上载图像时,它只上载一个图像;当我使用AsyncFileUpload2上载第二个图像时,它上载同一图像的两个版本 当我点击Save按钮保存数据,然后上传3个或更多版本的图片时,事情变得疯狂起来。我尝试了不同的方法,最终放弃了 HTML文件中的示例代码 <script type = "t
<script type = "text/javascript">
function uploadComplete(sender) {
// $get("<%=lblImageUploadMessage1.ClientID%>").innerHTML = "File Uploaded Successfully";
// $get("<%=lblImageUploadMessage2.ClientID%>").innerHTML = "File Uploaded Successfully";
clearContents();
clearContents2();
}
function uploadError(sender) {
// $get("<%=lblImageUploadMessage1.ClientID%>").innerHTML = "File upload failed. only Image files are allowed";
// $get("<%=lblImageUploadMessage2.ClientID%>").innerHTML = "File upload failed. only Image files are allowed";
clearContents();
}
</script>
<script type = "text/javascript">
function clearContents() {
var span = $get("<%=AsyncFileUpload1.ClientID%>");
var txts = span.getElementsByTagName("input");
for (var i = 0; i < txts.length; i++) {
if (txts[i].type == "text") {
txts[i].value = "";
}
}
}
function clearContents2() {
var span = $get("<%=AsyncFileUpload2.ClientID%>");
var txts = span.getElementsByTagName("input");
for (var i = 0; i < txts.length; i++) {
if (txts[i].type == "text") {
txts[i].value = "";
}
}
}
window.onload = clearContents;
</script>
<div class="row">
<asp:Label ID="lblPageTitleE" CssClass="txtLabel" runat="server" Text="Page Title (E) :"></asp:Label>
<asp:TextBox ID="txtPageTitleE" runat="server" CssClass="txtbox700"></asp:TextBox>
<asp:RequiredFieldValidator ID="RFVPageTitleE" runat="server" ErrorMessage="*"
ControlToValidate="txtPageTitleE" ValidationGroup="atpAddNewPage" CssClass="validation"></asp:RequiredFieldValidator>
</div>
<div class="row">
<asp:Label ID="lblPageTitleA" CssClass="txtLabel" runat="server" Text="Page Title (A) :"></asp:Label>
<asp:TextBox ID="txtPageTitleA" runat="server" CssClass="txtbox700"></asp:TextBox>
<asp:RequiredFieldValidator ID="RFVPageTitleA" runat="server" ErrorMessage="*"
ControlToValidate="txtPageTitleA" ValidationGroup="atpAddNewPage" CssClass="validation"></asp:RequiredFieldValidator>
</div>
<!-- Image Control -->
<div class="row">
<asp:Label ID="lblBannerImageE" CssClass="txtLabel" runat="server" Text="Banner Image (E) :"></asp:Label>
<asp:AsyncFileUpload OnClientUploadError="uploadError" OnClientUploadComplete="uploadComplete"
runat="server" ID="AsyncFileUpload1" UploaderStyle="Modern" CompleteBackColor="White"
UploadingBackColor="#336699" ThrobberID="imgLoader" OnUploadedComplete="AsyncFileUpload1_UploadedComplete" CssClass="AFU2" Width="400px" />
<asp:Label ID="lblImageUploadMessage1" CssClass="imgLabel" runat="server" Text=""></asp:Label>
<asp:Image ID="imgLoader" runat="server" ImageUrl="~/images/ajax-loader-small.gif" />
</div>
<div class="row">
<asp:Label ID="lblBannerImageA" CssClass="txtLabel" runat="server" Text="Banner Image (A) :"></asp:Label>
<asp:AsyncFileUpload OnClientUploadError="uploadError" OnClientUploadComplete="uploadComplete"
runat="server" ID="AsyncFileUpload2" UploaderStyle="Modern" CompleteBackColor="White"
UploadingBackColor="#336699" ThrobberID="imgLoader2" OnUploadedComplete="AsyncFileUpload2_UploadedComplete" CssClass="AFU2" Width="400px" />
<asp:Label ID="lblImageUploadMessage2" CssClass="imgLabel" runat="server" Text=""></asp:Label>
<asp:Image ID="imgLoader2" runat="server" ImageUrl="~/images/ajax-loader-small.gif" />
</div>
<!-- Image Control -->
函数上传完成(发送方){
//$get(“”.innerHTML=“文件上载成功”;
//$get(“”.innerHTML=“文件上载成功”;
clearContents();
clearContents2();
}
函数上载错误(发送方){
//$get(“”.innerHTML=“文件上载失败。只允许图像文件”;
//$get(“”.innerHTML=“文件上载失败。只允许图像文件”;
clearContents();
}
函数clearContents(){
var span=$get(“”);
var txts=span.getElementsByTagName(“输入”);
对于(变量i=0;i
下面是.CS文件的示例代码
在这个文件中,我使用GUID和image upload AsyncFileUpload为每个图像指定了唯一的名称。文件上载代码被执行了多次,我不知道我现在是多么困惑
public partial class _Default : System.Web.UI.Page
{
String BannerImageNameEn, BannerImageNameAr;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//Session["BannerImageNameEn"] = "Null";
//Session["BannerImageNameEn"] = "Null";
}
}
protected void btnCreatePage_Click(object sender, EventArgs e)
{
BusinessLogic objBLAddNewPage = new BusinessLogic();
Pages objPages = new Pages();
objPages.PageNameEn = txtPageNameE.Text;
objPages.PageNameAr = txtPageNameA.Text;
objPages.PageTitleEn = txtPageTitleE.Text;
objPages.PageTitleAr = txtPageTitleA.Text;
objPages.PageDescEn = txtPageDescE.Text;
objPages.PageDescAr = txtPageDescA.Text;
objPages.PageKeywordEn = txtPageKeywordsE.Text;
objPages.PageKeywordAr = txtPageKeywordsA.Text;
objPages.PageBodyEn = CKEditorPageBodyE.Text;
objPages.PageBodyAr = CKEditorPageBodyA.Text;
objPages.PageLinkPositionNo = int.Parse(txtPageLinkPosition.Text);
objPages.PageLayoutPosition = ddPageLayoutPosition.SelectedItem.Value.ToString();
// Assign Name to Images
objPages.PageBannerImageEn = Session["BannerImageNameEn"].ToString();
objPages.PageBannerImageAr = Session["BannerImageNameAr"].ToString();
objPages.PageBannerLinkEn = txtBannerLinkEnglish.Text;
objPages.PageBannerLinkAr = txtBannerLinkArabic.Text;
objPages.PageWindow = ddPageWindow.SelectedItem.Value.ToString();
objPages.PageActive = bool.Parse(ddPageActive.SelectedItem.Value.ToString());
objPages.PageVisible = bool.Parse(ddPageHidden.SelectedItem.Value.ToString());
objPages.PageCreateDate = Helper.GetUAEDateTime();
objPages.PageUpdateDate = Helper.GetUAEDateTime();
objPages.PageIPAddress = Request.ServerVariables["REMOTE_ADDR"];
try
{
bool result;
//result = objBLAddNewPage.CreateNewPage(objPages);
result = false;
if (result == true)
{
Response.Redirect("PageCreated.aspx");
}
else
{
}
}
catch (Exception ex)
{
//lblresult.Text = ex.ToString();
}
}
protected void AsyncFileUpload1_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
try
{
String filePath = string.Empty;
String CurrentGUID = Guid.NewGuid().ToString();
if (AsyncFileUpload1.HasFile)
{
string filename = System.IO.Path.GetFileName(AsyncFileUpload1.FileName);
System.IO.FileInfo f = new System.IO.FileInfo(AsyncFileUpload1.PostedFile.FileName);
int fileSize = Int32.Parse(System.IO.Path.GetFileName(e.FileSize));
if (fileSize < 1024000) // 1 MB current size size in bytes 102400=100kb 512000 = 500kb
{
if ((f.Extension.ToLower() == ".jpg") || (f.Extension.ToLower() == ".png") || (f.Extension.ToLower() == ".gif") || (f.Extension.ToLower() == ".jpeg"))
{
filename = CurrentGUID + f.Extension;
//string productGUID
filePath = Server.MapPath("../ImageUploads/") + filename;
if (System.IO.File.Exists(filePath))
{
return;
}
else
{
//Upload files
AsyncFileUpload1.PostedFile.SaveAs(Server.MapPath("../ImageUploads/") + filename);
Session["BannerImageNameEn"] = filename.ToString();
string errMsg = "File Uploaded Successfully";
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "size", "top.$get(\"" + lblImageUploadMessage1.ClientID + "\").innerHTML='" + errMsg + "';", true);
// ResizeImage(string OriginalFile, string NewFile, int NewWidth, int MaxHeight, bool OnlyResizeIfWider)
Helper.ResizeImage(filePath, filePath, 150, 80, true);
}
return;
}
}
else
{
lblImageUploadMessage1.Text = "Only type .jpg, .png, .gif are allow";
string errMsg = "File must be an Image type of .jpg, .png, .gif, .jpeg";
//client-side error
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "size", "top.$get(\"" + lblImageUploadMessage1.ClientID + "\").innerHTML='" + errMsg + "';", true);
return;
}
}
else
{
//lblMesg.Text = "Only type .jpg, .png, .gif are allow";
string errMsg = "File size is greater the 1MB";
//client-side error
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "size", "top.$get(\"" + lblImageUploadMessage1.ClientID + "\").innerHTML='" + errMsg + "';", true);
return;
}
}
catch (Exception ex)
{
}
}
protected void AsyncFileUpload2_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
try
{
String filePath = string.Empty;
String CurrentGUID = Guid.NewGuid().ToString();
if (AsyncFileUpload1.HasFile)
{
string filename = System.IO.Path.GetFileName(AsyncFileUpload1.FileName);
System.IO.FileInfo f = new System.IO.FileInfo(AsyncFileUpload1.PostedFile.FileName);
int fileSize = Int32.Parse(System.IO.Path.GetFileName(e.FileSize));
if (fileSize < 1024000) // 1 MB current size size in bytes 102400=100kb 512000 = 500kb
{
if ((f.Extension.ToLower() == ".jpg") || (f.Extension.ToLower() == ".png") || (f.Extension.ToLower() == ".gif") || (f.Extension.ToLower() == ".jpeg"))
{
filename = CurrentGUID + f.Extension;
//string productGUID
filePath = Server.MapPath("../ImageUploads/") + filename;
if (System.IO.File.Exists(filePath))
{
return;
}
else
{
//Upload files
AsyncFileUpload2.PostedFile.SaveAs(Server.MapPath("../ImageUploads/") + filename);
Session["BannerImageNameAr"] = filename.ToString();
string errMsg = "File Uploaded Successfully";
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "size", "top.$get(\"" + lblImageUploadMessage2.ClientID + "\").innerHTML='" + errMsg + "';", true);
// ResizeImage(string OriginalFile, string NewFile, int NewWidth, int MaxHeight, bool OnlyResizeIfWider)
Helper.ResizeImage(filePath, filePath, 150, 80, true);
}
return;
}
}
else
{
lblImageUploadMessage1.Text = "Only type .jpg, .png, .gif are allow";
string errMsg = "File must be an Image type of .jpg, .png, .gif, .jpeg";
//client-side error
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "size", "top.$get(\"" + lblImageUploadMessage2.ClientID + "\").innerHTML='" + errMsg + "';", true);
return;
}
}
else
{
//lblMesg.Text = "Only type .jpg, .png, .gif are allow";
string errMsg = "File size is greater the 1MB";
//client-side error
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "size", "top.$get(\"" + lblImageUploadMessage2.ClientID + "\").innerHTML='" + errMsg + "';", true);
return;
}
}
catch (Exception ex)
{
}
}
public分部类\u默认值:System.Web.UI.Page
{
字符串bannerimagename,bannerimagename;
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!IsPostBack)
{
//会话[“BannerImageNameEn”]=“空”;
//会话[“BannerImageNameEn”]=“空”;
}
}
受保护的无效BTN创建页面\单击(对象发送者,事件参数e)
{
BusinessLogic objBLAddNewPage=新的BusinessLogic();
Pages objPages=新页面();
objPages.PageNameEn=txtPageNameE.Text;
objPages.PageNameAr=txtPageNameA.Text;
objPages.PageTitleEn=txtPageTitleE.Text;
objPages.PageTitleAr=txtPageTitleA.Text;
objPages.PageDescEn=txtPageDescE.Text;
objPages.PageDescAr=txtPageDescA.Text;
objPages.PageKeywordEn=txtPageKeywordsE.Text;
objPages.PageKeywordAr=txtPageKeywordsA.Text;
objPages.PageBodyEn=CKEditorPageBodyE.Text;
objPages.PageBodyAr=CKEditorPageBodyA.Text;
objPages.PageLinkPositionNo=int.Parse(txtPageLinkPosition.Text);
objPages.PageLayoutPosition=ddPageLayoutPosition.SelectedItem.Value.ToString();
//为图像指定名称
objPages.PageBannerImageEn=会话[“bannerimageen”].ToString();
objPages.PageBannerImageAr=会话[“bannerimagear”].ToString();
objPages.PageBannerLinkEn=txtbanerlinklish.Text;
objPages.PageBannerLinkAr=txtBannerLinkArabic.Text;
objPages.PageWindow=ddPageWindow.SelectedItem.Value.ToString();
objPages.PageActive=bool.Parse(ddPageActive.SelectedItem.Value.ToString());
objPages.PageVisible=bool.Parse(ddPageHidden.SelectedItem.Value.ToString());
objPages.PageCreateDate=Helper.GetUAEDateTime();
objPages.PageUpdateDate=Helper.GetUAEDateTime();
objPages.PageIPAddress=Request.ServerVariables[“REMOTE_ADDR”];
尝试
{
布尔结果;
//结果=objBLAddNewPage.CreateNewPage(objPages);
结果=假;
如果(结果==真)
{
重定向(“PageCreated.aspx”);
}
其他的
{
}
}
捕获(例外情况除外)
{
//lblresult.Text=ex.ToString();
}
}
受保护的void AsyncFileUpload1\u UploadedComplete(对象发送方,AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
尝试
{
String filePath=String.Empty;
字符串CurrentGUID=Guid.NewGuid().ToString();
if(AsyncFileUpload1.HasFile)
{
字符串filename=System.IO.Path.GetFileName(AsyncFileUpload1.filename);
System.IO.FileInfo f=new System.IO.FileInfo(AsyncFileUpload1.PostedFile.FileName);
int fileSize=Int32.Parse(System.IO.Path.GetFileName(e.fileSize));
if(fileSize<1024000)//1 MB当前大小字节102400=100kb 512000=500kb
{
如果((f.Extension.ToLower()=“.jpg”)| |(f.Extension.ToLower()=“.png”)| |(f.Extension.ToLower()=”.gif”)| |(f.Extension.ToLower()=“.jpeg”))
{
filename=CurrentGUID+f.扩展名;
//字符串productGUID
filePath=Server.MapPath(“../ImageUploads/”)+文件名;
if(System.IO.File.Exists(filePath))
{
返回;
}
其他的
{
//上传文件
AsyncFileUpload1.Post