PDA

View Full Version : (MS AJAX)مشکلFileUpload در UpdatePanel



m.hamidreza
شنبه 20 مرداد 1386, 22:31 عصر
این کد رو بنگرید :



string strPath = Server.MapPath("~/images/");
if (FileUpload1.HasFile)
{

FileUpload1.PostedFile.SaveAs(strPath + "newFile" + ".jpg");

}




فرض کنید این کد توی OnClick یه Button باشه و Button توی یه UpdatePanel ، حالا مشکل اینه که کد درون if هیچ وقت اجرا نمی شه یعنی شما اگه با fileupload فایلی رو انتخاب کنی و بعد روی button کلیک کنی وارد if نمیشی !
بودن یا نبودن خود fileupload توی updatepanel هم افاده ای نداشت !
این مشکل برا زمانیه که button توی UpdatePanel هست و گرنه بطور عادی وارد if میشه . . . بعبارت دیگه رویداد button از تشخیص اینکه fileupload فایلی رو در بر داره عاجزست ! :ناراحت:

Amir Taghavi
یک شنبه 21 مرداد 1386, 07:22 صبح
کلا AJAX واسه FileUpload و بعضی کارهای دیگه جواب نمی ده. معمولا این تکنواوژی رو واسه هر کاری بکار نمی گیرند. شما مجبورید واسه خیلی از کارها Page حتما Postback بشه. اما فکر کنم تو VS 2008 مشکل Back حل شده باشه.

m.hamidreza
یک شنبه 21 مرداد 1386, 16:19 عصر
:لبخندساده:
http://www.asp.net/ajax/documentation/live/overview/UpdatePanelOverview.aspx
شما مطمئنی نمیشه عزیز برادر ؟ شما یه نگاه بنداز بی زحمت . . .

این مقاله چی میگه ؟ انجامش دادم ولی نشد refresh میشه ! :ناراحت:
http://www.codeproject.com/useritems/simpleajaxupload.asp

Amir Taghavi
یک شنبه 21 مرداد 1386, 21:14 عصر
شما مطمئنی نمیشه عزیز برادر ؟ شما یه نگاه بنداز بی زحمت . . .عزیز دل انگیز تو همون لینکی که داده بودی نوشته شده:


Controls that Are Not Compatible with UpdatePanel Controls

The following ASP.NET controls are not compatible with partial-page updates, and are therefore not supported inside an UpdatePanel control:

*

TreeView and Menu controls.
*

Web Parts controls. For more information, see ASP.NET Web Parts Controls.
*

FileUpload controls when they are used to upload files as part of an asynchronous postback.
*

GridView and DetailsView controls when their EnableSortingAndPagingCallbacks property is set to true. The default is false.
*

Login, PasswordRecovery, ChangePassword, and CreateUserWizard controls whose contents have not been converted to editable templates.
*

The Substitution control.
*

Validation controls, which includes the BaseCompareValidator, BaseValidator, CompareValidator, CustomValidator, RangeValidator, RegularExpressionValidator, RequiredFieldValidator, and ValidationSummary control.
لطفا با دقت مطالعه کنید!!!

m.hamidreza
دوشنبه 22 مرداد 1386, 12:48 عصر
بله ولی پایین همون قسمت هم نوشته :

To use a FileUpload (http://msdn2.microsoft.com/en-us/ysf0192b) control inside an UpdatePanel (http://www.asp.net/ajax/documentation/live/mref/T_System_Web_UI_UpdatePanel.aspx) control, set the postback control that submits the file to be a PostBackTrigger (http://www.asp.net/ajax/documentation/live/mref/T_System_Web_UI_PostBackTrigger.aspx) control for the panel.

:متفکر: ؟!!!!

Amir Taghavi
دوشنبه 22 مرداد 1386, 16:46 عصر
البته من فکر کردم می خوای Refresh نشه! (-:

fereshte22
پنج شنبه 25 مرداد 1386, 09:20 صبح
سلام
اخرش راهی وجود ندارد که هم ازfileupload و updatepanel استفاده شود و صفحه نیز رفرش نشود؟

majid.nozad
پنج شنبه 25 مرداد 1386, 20:11 عصر
با سلام خدمت عزیزان این مشکل رو من اینجوری حل کردم که بعد از انتخاب عکس یک دکمه دیگه گذاشتم مثل دکمه درج و با کد


Dim Len As Integer = File1.PostedFile.ContentLength
If Len = 0 Then i = 0 Else i = 1



چک کردم که عکس انتخاب شده یانه در ضمن یک نکته رو هم بگم که این دکمه درج من که btn_insert نام داره رو تو تریگر و به صورت زیر در انتهای update panel گذاشتم که با زدن اونها هم رفرش نشه :




</ContentTemplate>

<Triggers>

<asp:PostBackTrigger ControlID="Btn_Insert" />
<asp:PostBackTrigger ControlID="Btn_Edit" />

</Triggers>
</asp:UpdatePanel>



اگه درست نشده بیشتر توضیح بده شاید بتونم بیشتر راهنماییت کنم

medi33
پنج شنبه 25 مرداد 1386, 22:16 عصر
با سلام
تمام راه حل هایی که دوستان عنوان کردند به postBack صفحه ختم میشه چون از PostBackTriggerاستفاده میشه..
این مشکل یک راه حل (از نظر مشکلی) متوسط داره..
باید از یک iframe استفاده بشه که scr تگ iframe یک صفحه html باشه.
در صفحه html باید یک fileUploader از نوع html بگذارید و یک button باز هم از نوع html.
button رو hidden کنید.
بعد iframe رو در webPage تون بزارید.
در این مرحله یک سری کد سمت server داره و یک سری کد جاوا اسکریپت.
این تنها روشی هست که من تونستم بدون postBack صفحه عکسم رو هم تو database و هم تو server ذخیره کنم !!
اگه کد کامل رو میخواین برید به این آدرس:
http://geekswithblogs.net/rashid/archive/2007/08/01/Create-An-Ajax-Style-File-Upload.aspx
البته روشی که در لینک بالا هست یکمی سخته... من از روش دیگه ای استفاده میکنم
اگه خواستین بهم میل بزنید تا source برنامه رو براتون بفرستم!! M3hdi.aspx@yahoo.com

Amir Taghavi
جمعه 26 مرداد 1386, 05:06 صبح
اگه خواستین بهم میل بزنید تا source برنامه رو براتون بفرستم!!

از اینجا بهتر جایی سراغ داری؟!!! منتظریم، شدید!

medi33
جمعه 26 مرداد 1386, 09:20 صبح
سلام
یک لینک داشت منتها گمش کردم.. خیلی هم گشتم
ولی source برنامه رو دارم
بهم میل بزنید براتون بفرستم

m.hamidreza
جمعه 26 مرداد 1386, 19:58 عصر
با سلام خدمت عزیزان این مشکل رو من اینجوری حل کردم در انتهای update panel گذاشتم که با زدن اونها هم رفرش نشه :


این بازم Refresh میشه ...

m.hamidreza
جمعه 26 مرداد 1386, 20:06 عصر
بهم میل بزنید براتون بفرستم

عزیز برادر شاید این تاپیک در آینده بتونه پاسخگوی سوال خیلی از دوستان دیگه هم باشه اونوقت دونه دونه که نمی تونن به شما email بزنند !
تازه شاید اون موقع بری مثلا Holiday ! :لبخندساده: بهتر آنست که Source رو Upload بفرمایید ...

این source با MS AJAX هست یا نه ؟

majid.nozad
شنبه 27 مرداد 1386, 20:12 عصر
من این صفحه رو طراحی کردم که upload هم داره و REFRESH نمیشه از iFRAME هم استفاده نکردم . با همون کدهایی که نوشتم .

medi33
شنبه 27 مرداد 1386, 21:50 عصر
عزیز برادر شاید این تاپیک در آینده بتونه پاسخگوی سوال خیلی از دوستان دیگه هم باشه اونوقت دونه دونه که نمی تونن به شما email بزنند !
تازه شاید اون موقع بری مثلا Holiday ! :لبخندساده: بهتر آنست که Source رو Upload بفرمایید ...

این source با MS AJAX هست یا نه ؟

سلام
راستش من نمی دونستم که میشه فایل آپلود کرد والا این کارو می کردم

دوست عزبز باید بگم که بدون iFrame نمیشه اینکار رو انجام داد .. اگه شما کدتون بدون postBack و iFrame کار میکنه لطف کنید source پروژتون رو بفرستین...

پروژه با Ms Ajax نوشته شده و بدون هیچ postBack ی انجام میشه.
اگه سوالی داشتید در خدمتم
موفق باشین!!!

mk88km
یک شنبه 04 آذر 1386, 12:32 عصر
سلام
من به لینکی که گذاشته بودید سر زدم اما در نهایت ندیدم که Fileupload رو داخل UpdatePanel گذاشته باشن.
شما راهی برای این کار دارید؟

m.hamidreza
یک شنبه 04 آذر 1386, 17:11 عصر
سلام
من به لینکی که گذاشته بودید سر زدم اما در نهایت ندیدم که Fileupload رو داخل UpdatePanel گذاشته باشن.
شما راهی برای این کار دارید؟

عارضم خدمتتون که توی UpdatePanel یه iframe هست که به یه فایل html لینک شده ، fileupload تو اون فایل html میباشد ! :لبخندساده: دلیل این کار هم همون مطالبیه که تو پست ها گفته شده ....

mahdi_farhani
یک شنبه 04 آذر 1386, 19:57 عصر
من این مشکلو داشتم ولی وقتی از Updatepanel اوردم بیرون مشکلم حل شد ، ولی اینجا رو نمیدونم .
اگر هم میگه با Button گیر میده که فکر نکنم اینطوری باشه از Clientpostback خوده دات نت استفاده کن تا خیالت راحت بشه ، برای کسب اطلاعات بیشتر با پست آقای راد در مورد Ajax را بدون Ajax تجربه کنید مراجعه کنید ، دیگه با این روش نه صفحه Refresh میشه و نه با Upload مشکل پیدا میکنی ، ولی شاید یه مقدار کدهات بیشتر بشه ( هرکه Ajax خواهدجور برنامه نویس کشد ...... :d)

mahdi_farhani
سه شنبه 06 آذر 1386, 14:50 عصر
یه نگاهی به این dll بنداز شاید به دردت بخوره

el_abdollahi
سه شنبه 09 بهمن 1386, 08:46 صبح
من از این dll استفاده کردم .ولی وقتی عکسم رو انتخاب میکنم این پیغام رو میده :no guardado .
لطفا کمک کنید.

m.hamidreza
سه شنبه 09 بهمن 1386, 21:54 عصر
از روش پست 16 هم میتونید استفاده کنید ! یادمه من تستش کردم ...
dll رو مهندس فرهانی در جریانشه ...

mahdi_farhani
شنبه 13 بهمن 1386, 14:47 عصر
تو PageLoad از این استفاده کن

if (FileUploaderAJAX1.IsPosting)
{
try
{
Subgurim.Controles.HttpPostedFileAJAX pf=FileUploaderAJAX1.PostedFile;
FileUploaderAJAX1.File_RenameIfAlreadyExists = true;
pf = FileUploaderAJAX1.PostedFile;
FileUploaderAJAX1.SaveAs("~\\Images\\Estate", pf.FileName);
strImage.Add(pf.FileName);
}
catch
{
lblMsg.Text = "فایل مورد نظر ارسال نشد";
}

}

el_abdollahi
شنبه 13 بهمن 1386, 17:41 عصر
از کمکتون ممنون . کد رو گذاشتم ولی باز خطای no guardado رو میده و عکس رو ذخیره نمیکنه.لطفا کمک کنید.

s.mahmood
یک شنبه 27 دی 1388, 17:48 عصر
سلام برای استفاده از fileuploadajax باید از این کدها در default.aspx.csاستفاده کنید

همچنین نسخه جدیدش هم اومده هنوز تست نکردم
http://en.fileuploadajax.subgurim.net/Upload/fileuploadajax-v1-2.zip


protected void Page_Load(object sender, EventArgs e)
{
if (FileUploaderAJAX1.IsPosting)
this.managePost();
}

private void managePost()
{
Subgurim.Controles.HttpPostedFileAJAX pf = FileUploaderAJAX1.PostedFile;

if (pf.ContentType.Equals("image/gif") && pf.ContentLength <= 100 * 1024)
FileUploaderAJAX1.SaveAs("~/img", pf.FileName);
}
قسمتی رو که قرمز کردم برای محدود شدن آپلود هست
به این صورت که فقط فایل عکس با پسوند گیف و حجم کمتر از 5 کیلوبایت بتونید آپلود کنید
اگر این خط رو بردارید همه جور فایل با هر پسوندی میتونید آپلود کنید:لبخند:
قسمتی هم که سبز رنگ هست فایل رو تو پوشه img ذخیره میکنه که اگر هم وجو نداشته باشه میسازه.
این خط رو پاک نکنید که حیاتی هست.
امیدوارم به دردتون بخوره .منم همین مشکل رو داشتم و مشکلم حل شد:بامزه:

jingiliboyz
دوشنبه 28 دی 1388, 10:58 صبح
سلام
راستش من نمی دونستم که میشه فایل آپلود کرد والا این کارو می کردم

دوست عزبز باید بگم که بدون iFrame نمیشه اینکار رو انجام داد .. اگه شما کدتون بدون postBack و iFrame کار میکنه لطف کنید source پروژتون رو بفرستین...

پروژه با Ms Ajax نوشته شده و بدون هیچ postBack ی انجام میشه.
اگه سوالی داشتید در خدمتم
موفق باشین!!!

مرسی از مطلبی که گذاشتید ولی من دنبال کد vb این فایل آپلود هستم درضمن اگه امکان داره طریقه اتصال ajax به دات نت رو هم بگید مرسی