PDA

View Full Version : سوال: آپلود عکس توسط AsyncFileUpload



hgh.just.hony
یک شنبه 23 مهر 1391, 15:54 عصر
سلام
من تو برنامم یه یورزکنترل UC دارم که توش از یه کامپوننت Ajax - AsyncFileUpload استفاده کردم با یک Image از نوع Asp.net و Button برای تمایش تصویر

در هر صفحه ای که این UC را صدا می زنم درون سژن آدرس ( ‌Session["address"]m ) یه ادرس پیش فرض را میریزم که Ajax - AsyncFileUpload بعد از اتمام دانلود درون اون ادرس تصویر را ذخیره کنه و دستور Response.Write را برای نمایش اتمام آپلود تصویر گذاشتم .البته توع فایل اپلود شده و حجم ان نیز در سمت سرور چک می شود .

در حین آپلود خاصیت ThrobberID را با یک img و یک Label پر کردم و که هم متن " لطفا منتظر بمانید" را نمایش می دهد و هم img لودر حرکت می کند. که بعد از اتمام اپلود این خاصیت false میشود.

سپس alert درون Response.Write متنی با عنوان "آپلود تمام شد.برای دیدن تصویر دکمه ی نمایش را بزنید." را نمایش می دهد .

در اینجا 2 مشکل وجود دارد :
1 - متد AsyncFileUpload1_UploadedComplete دوبار اجرا می شود . یعنی بعد از اینکه آپلود سمت سرور تمام شد اجرا میشود و alert درون Response.Write را نمایش می دهد سپس کاربر که دکمه نمایش تصویر را که زد این متد دوباره اجرا می شود .
(دکمه نمایش تصویر ، تصویز را از سژن آدرس می خواند . )
2 - بعد از نمایش alert درون Response.Write اولی خاصیت ThrobberID هنوز در حال اجرا است و زمانیکه رنگ AsyncFileUpload سبز نشده به حالت اجرا می باشد.

==> مشکل من : نمایش اتمام آپلود به کاربر
اینم کدم :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

namespace Market
{
public partial class UC_OldUploade : System.Web.UI.UserControl
{
//________________________________________
Market.DATA.BAL.BAL_errlogANDnotification err = new DATA.BAL.BAL_errlogANDnotification();
//_______________________________________
protected void Page_Load(object sender, EventArgs e)
{
try
{
Image1.ImageUrl = "~//" + Session["address"].ToString();
}
catch (Exception ex)
{
//------------
// 1 : show persian message to users
//----------
String csname1 = "PopupScript";
Type cstype = this.GetType();
string message = "بارگذاری عکس دچار خطا شده است";

// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = Page.ClientScript;
String cstext1 = "alert(' " + message + ".');";
cs.RegisterStartupScript(cstype, csname1, cstext1, true);

//------------
// 2 : insert to sql
//-----------
err.ins_errorlog("صفحه ی ثبت کالا و خدمات", "بارگذاری عکس", ex.Message, message);
return;
}

}

protected void AsyncFileUpload1_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
string directory = "";
bool typeFile = true;//true-->picture and false-->not picture
long size = 0;
try
{
directory = Session["address"].ToString();

typeFile = Convert.ToBoolean(Session["type"].ToString());
size = long.Parse(Session["size"].ToString());
}
catch (Exception ex)
{
;
}
try
{
if (AsyncFileUpload1.HasFile)
{
String csname1 = "PopupScript";
Type cstype = this.GetType();

// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = Page.ClientScript;
string type = AsyncFileUpload1.ContentType;

if (typeFile)
{
if (type.Contains("bmp") | type.Contains("png") | type.Contains("jpeg"))
{
if (long.Parse(e.FileSize) > size)
{
String cstext1 = "alert('حجم فایل شما بیش از حد مجاز است..');";
cs.RegisterStartupScript(cstype, csname1, cstext1, true);
return;
}
if (size>=30720)
{
Image1.Width = 160;
Image1.Height = 220;
}
//Session["address"] = directory + ".jpg";
string addr = "\\Uploaded-Files\\" + Session["UserId"].ToString() + "\\";
if (!Directory.Exists(MapPath(addr)))

// If it doesn't then we just create it before going any further
Directory.CreateDirectory(MapPath(addr));

AsyncFileUpload1.SaveAs(Server.MapPath(directory)) ;
ClearContents(AsyncFileUpload1);
Response.Write("<script>alert('اتمام بارگذاری.لطفا برای دیدن تصویر دکمه نمایش را بزنید');</script>");
}
else
{
String cstext1 = "alert('تنها تصاویری با فرمت jpeg,png,bmp قابل پذیرش است ..');";
cs.RegisterStartupScript(cstype, csname1, cstext1, true);
return;
}
}

else
{
if (type.Contains("excel") | type.Contains("xls"))
{
//string strPath = MapPath("~/Uploads/") + Path.GetFileName(e.filename);
//Session["address"] = directory + ".xls";
AsyncFileUpload1.SaveAs(Server.MapPath(directory)) ;
ClearContents(AsyncFileUpload1);
//Response.Write("<script>alert('بارگذاری فایل با موفقیت انجام شد.')</script>");
}
else
{
String cstext1 = "alert('تنها فایلی با فرمت xlsx,xls قابل پذیرش است ..');";
cs.RegisterStartupScript(cstype, csname1, cstext1, true);
return;
}
}
}
}

catch (Exception ex)
{
//------------
// 1 : show persian message to users
//----------
String csname1 = "PopupScript";
Type cstype = this.GetType();
string message = "بارگذاری عکس دچار خطا شده است";

// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = Page.ClientScript;
String cstext1 = "alert(' " + message + ".');";
cs.RegisterStartupScript(cstype, csname1, cstext1, true);

//------------
// 2 : insert to sql
//-----------
err.ins_errorlog("صفحه ی ثبت کالا و خدمات", "بارگذاری عکس", ex.Message, message);
return;
}
}


//___________________________________________
/// <summary>
/// برای پاک کردن آپلودرها
/// </summary>
/// <param name="control"></param>
private void ClearContents(Control control)
{
for (var i = 0; i < Session.Keys.Count; i++)
{
if (Session.Keys[i].Contains(control.ClientID))
{
Session.Remove(Session.Keys[i]);
break;
}
}
}

protected void btn_show_Click(object sender, EventArgs e)
{
try
{
if (HttpContext.Current.Request.Url.AbsolutePath.Cont ains("Profile_Company_profile"))
{
Image1.Width = 80;
Image1.Height = 80;
}

string adrs = "~//"+Session["address"].ToString();
Image1.ImageUrl = adrs;

}
catch (Exception ex)
{
//------------
// 1 : show persian message to users
//----------
String csname1 = "PopupScript";
Type cstype = this.GetType();
string message = "بارگذاری عکس دچار خطا شده است";

// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = Page.ClientScript;
String cstext1 = "alert(' " + message + ".');";
cs.RegisterStartupScript(cstype, csname1, cstext1, true);

//------------
// 2 : insert to sql
//-----------
err.ins_errorlog(HttpContext.Current.Request.Url.A bsolutePath, "", ex.Message, message);
return;
}
}


}

}




<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UC_OldUploade.ascx.cs" Inherits="Market.UC_OldUploade" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %>
<style>
/*input[type="submit"] {
-moz-box-shadow:inset 0px 1px 0px 0px #9294ab;
-webkit-box-shadow:inset 0px 1px 0px 0px #9294ab;
box-shadow:inset 0px 1px 0px 0px #9294ab;
background-color:#b3cce3;
-moz-border-radius:6px;
-webkit-border-radius:6px;
border-radius:6px;
border:1px solid #93a9b8;
display:inline-block;
color:#ffffff;
font-family:tahoma;
font-size:12px;
padding:6px 24px;
text-decoration:none;
text-shadow:1px 1px 0px #6384ed;
}.input[type="submit"]:hover {
background-color:#e9e9e9;
}input[type="submit"]:active {
position:relative;
top:1px;
}
</style>
<script type="text/javascript">
function uploadComplete(sender, args) {
// var filename = args.get_fileName();
// $get("imgUpload").src = "./upload/" + filename;
$get("imgUpload").src = '<%= Session["address"] %>';
</script>
<fieldset dir="rtl"

style="border-style: hidden; width: 352px; height: 163px; font-family: tahoma; font-size: 11px;">
<legend style="width: 120px">محل بارگذاری تصویر</legend>
<asp:AsyncFileUpload ID="AsyncFileUpload1" runat="server" Height="16px"
onuploadedcomplete="AsyncFileUpload1_UploadedComplete" ThrobberID="myTh"
UploaderStyle="Modern"
FailedValidation="False" Width="227px" />
<%-- <script type="text/javascript">OnClientUploadComplete="uploadComplete"
function uploadComplete(sender, args) {
var filename = args.get_fileName();
$get("imgUpload").src = ".\Uploaded-Files\31\5aade2f9-f1e8-4a82-a0ca-7df0718a38fb.jpg";
}
</script>--%>
<br />

<asp:Label ID="myTh" runat="server">
<img alt="" src="Imags/loading_animation.gif" />برای بارگذاری تصویر صبر کنید
</asp:Label>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<asp:Button ID="btn_show" runat="server"
ForeColor="Black" Height="25px" Text="نمایش تصویر"
onclick="btn_show_Click" />
<br />
<asp:Image ID="Image1" runat="server" />
<img src="" id="imgUpload" alt="" />
<br />
</fieldset>

hgh.just.hony
دوشنبه 24 مهر 1391, 09:07 صبح
اساتید؟؟؟
کسی اینجا نظری تداره ؟:متفکر:

hgh.just.hony
دوشنبه 24 مهر 1391, 09:47 صبح
من یه چیزایی پیدا کردم اما نمیتونم یفهممش ----> site (http://stackoverflow.com/questions/5018044/asyncfileupload-postback-causes-double-upload)
میشه کمک کنین تا بفهمم مشکلش چیه ؟