PDA

View Full Version : مشکل با fileupload در updatepanel



saeed_sho
جمعه 31 شهریور 1391, 15:06 عصر
سلام
فایل آپلود رو گذاشتم داخل updatePanel و فهمیدم فایل آپلود اگه داخل updatePanel باشه کار نمیکنه
تگ trigger هم استفاده کردم درست نشد
بجای فایل آپلود از asyncFileUpload استفاده کردم اونم درست کار نکرد و HasFile رو false برمیگردونه
سرچ کردم همه دو تا راه بالا رو پیشنهاد داده بودن اما جواب نداد
لطفا راهنمایی کنید

اوبالیت به بو
جمعه 31 شهریور 1391, 18:35 عصر
درود بر شما

کنترل FileUpload با UpdatePanel سازگار نیست.

Sirwan Afifi
جمعه 31 شهریور 1391, 18:38 عصر
کنترل فایل آپلود برای آپلود فایل نیاز به PostBack داره اگه می خواید داخل UpdatePanel استفاده کنید تگ Trigger رو بهش اضافه کنید به این صورت :

<Triggers>
<asp:PostBackTrigger ControlID="btnSave" />
</Triggers>

saeed_sho
شنبه 01 مهر 1391, 09:03 صبح
کنترل فایل آپلود برای آپلود فایل نیاز به PostBack داره اگه می خواید داخل UpdatePanel استفاده کنید تگ Trigger رو بهش اضافه کنید به این صورت :

<Triggers>
<asp:PostBackTrigger ControlID="btnSave" />
</Triggers>
در پست اول گفتم از تریگر استفاده کردم درسته postback اتفاق میافته اما باز هم فایل آپلود مقداره HasFile رو false برمیگردونه
لطفا راهنمایی کنید

hgh.just.hony
دوشنبه 03 مهر 1391, 09:39 صبح
منم دنبال این خیلی گشتم
بیا عزیز کسی که سوال ما رو جواب نداد داداش حداقل ما سوال تورو جواب (http://barnamenevis.org/showthread.php?361147-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-RadAsyncUpload-%D8%AF%D8%B1-%D8%B3%D9%85%D8%AA-%DA%A9%D9%84%D8%A7%DB%8C%D9%86%D8%AA.&p=1593935&viewfull=1#post1593935) بدیم ثواب کنیم
این جا هم با جاوا یه پیش نمایش داریم


//yekish ba java meghdar ,igire yekish ba dokme khodet setesh kon dadash
protected void FileUploadComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{


}

protected void AsyncFileUpload1_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
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 (type.Contains("bmp") | type.Contains("png") | type.Contains("jpeg"))
{
if (long.Parse(e.FileSize) > 30420)
{
String cstext1 = "alert('حجم فایل شما بیش از حد مجاز است..');";
cs.RegisterStartupScript(cstype, csname1, cstext1, true);
return;
}

//Session["address"] = directory + ".jpg";
AsyncFileUpload1.SaveAs(Server.MapPath(directory)) ;//directory masire filete
ClearContents(AsyncFileUpload1);
}
else
{
String cstext1 = "alert('تنها تصاویری با فرمت jpeg,png,bmp قابل پذیرش است ..');";
cs.RegisterStartupScript(cstype, csname1, cstext1, true);
return;
}
}
}

protected void Button1_Click(object sender, EventArgs e)
{
//inja aval save kon bad address bede
string adrs = "~//" + Session["address"].ToString();
Image1.ImageUrl = adrs;

}
//___________________________________________
/// <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;
}
}
}
}





<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %>
<script src="jquery-1.6.2.min.js" type="text/javascript"></script>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<script type="text/javascript">
function StartUpload() {
$("imgDisplay").hide();
}
function UploadComplete(sender, args) {
$("#imgDisplay").show();
$("#imgDisplay").attr('src', 'ajax-loader.gif');
var img = new Image();
img.src = args.get_fileName();

img.onload = function () {
$("#imgDisplay").attr('src', img.src);
};
}
</script>
<fieldset style="width: 352px; height: 348px; font-family: tahoma; font-size: 11px;"
dir="rtl">
<legend style="width: 120px">محل بارگذاری تصویر</legend>
<asp:AsyncFileUpload ID="AsyncFileUpload1" runat="server"
Height="16px"

ThrobberID="myTh"
UploaderStyle="Modern" Width="227px" onuploadedcomplete="AsyncFileUpload1_UploadedComplete"
/>

<br />
<asp:Image ID="Image1" runat="server" />
<img id = "imgDisplay" alt="" src="" style = "display:none"/>
<asp:Label ID="myTh" runat="server">
<img alt="" src="loading_animation.gif" />برای بارگذاری تصویر صبر کنید
</asp:Label>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="show" />
<br />
<br />
</fieldset>
_____________________________________________
<fieldset style="width: 352px; height: 348px; font-family: tahoma; font-size: 11px;"
dir="rtl">
<legend>محل بارگذاری تصویر</legend>
<asp:AsyncFileUpload ID="AsyncFileUpload2" runat="server"
FailedValidation="False" Height="16px"
OnUploadedComplete="FileUploadComplete"
style="margin-bottom: 0px" TabIndex="7" ThrobberID="myTh"
UploaderStyle="Modern" Width="227px"
OnClientUploadComplete="UploadComplete"
OnClientUploadStarted = "StartUpload"/>

<br />
<img id = "img1" alt="" src="" style = "display:none"/>
<asp:Label ID="Label1" runat="server">
<img alt="" src="loading_animation.gif" />تا زمان مشاهده ی تصویر صبر کنید
</asp:Label>
<br />
</fieldset>


فقط ایجکس نصب کن رو سیستمت

saeed_sho
سه شنبه 04 مهر 1391, 19:25 عصر
دوست عزیز ممنون از توجهت و کدهایی که نوشتید اما این کدها که بیرون از updatePanel هستن

alibabaei2
یک شنبه 09 مهر 1391, 11:57 صبح
سلام
باید دکمه ای که باعث callback شدن می گردد رو با کد زیر از کاری کنید که postback انجام شود
ScriptManager1.RegisterPostBackControl(btnSave);
حالا مشکل حل میشه

saeed_sho
پنج شنبه 02 خرداد 1392, 09:14 صبح
مشکلم حل شده اما متاسفانه یادم رفته تا راه حل رو بزارم اینجا تا بقیه که این مشکلو دارن مشکلشون حل بشه و به خواست دوستان پاسخ رو میزارم تا مشکلشون حل بشه
اول داخل تریگر update panel اینو بنویسید و breakpoint بزارین ببینید HasFile مقدار true برمیگردونه یا نه

<Triggers>
<asp:PostBackTrigger ControlID="btn_import" />
</Triggers>اگه بازم مقدار false برگردوند تیر خلاصو بهش بزنید و به page_load اینو اضافه کنید
If Not (IsPostBack) Then
Page.Form.Attributes.Add("enctype", "multipart/form-data")
End If
اگه از یوزر کنترل استفاده میکنید شرط بالا رو در یوزر کنترل بزارید

article
چهارشنبه 06 شهریور 1392, 14:07 عصر
مشکلم حل شده اما متاسفانه یادم رفته تا راه حل رو بزارم اینجا تا بقیه که این مشکلو دارن مشکلشون حل بشه و به خواست دوستان پاسخ رو میزارم تا مشکلشون حل بشه
اول داخل تریگر update panel اینو بنویسید و breakpoint بزارین ببینید HasFile مقدار true برمیگردونه یا نه

<Triggers>
<asp:PostBackTrigger ControlID="btn_import" />
</Triggers>اگه بازم مقدار false برگردوند تیر خلاصو بهش بزنید و به page_load اینو اضافه کنید
If Not (IsPostBack) Then
Page.Form.Attributes.Add("enctype", "multipart/form-data")
End If
اگه از یوزر کنترل استفاده میکنید شرط بالا رو در یوزر کنترل بزارید

سلام دوست عزیز btn_import اسم دکمه ایه که فایل اپلود توش مقدارش دخیره شده؟
اون کد دومیه چیه میشه بیشتر توضیح بدید؟
منم دقیقا همین مشکل و دارم.