PDA

View Full Version : مشکل با FileUpload در UpdatePanel



آرام جان گل
پنج شنبه 12 آذر 1388, 10:38 صبح
سلام

من یک کنترل FileUpload دارم که داخل یک UpdatePanel قرار داره و حتماً می خوام UpdatePanel سرجاش بمونه یعنی نمی تونم اون را حذف کنم.
حالا file مورد نظرم را بر می دارم و در زمان درج کردن وقتی کد زیر را می نویسم
:


if (this.FileUpload_ExpEdu.PostedFile.FileName != null &&
this.FileUpload_ExpEdu.PostedFile.FileName != "")


و debuge می کنم هیچ فایلی را نی شناسه انگار که فایلی انتخاب نشده ولی به محض اینکه FileUpload را از UpdatePanel خارج می کنم جواب می ده و مثل یک کنترل خوب کار می کنه

لطفا راهکار بدید
مرسی

clover
پنج شنبه 12 آذر 1388, 16:12 عصر
كنترل FileUpload زمانيكه داخل Ajax UpdatePanel قرار گيرد كار نمي‌كند و خاصيت Hasfile آن در اين حالت هميشه false بر مي‌گرداند، زيرا اين كنترل براي كار كردن نياز به post back كامل دارد. براي معرفي اين post back داخل update panel ، بايد يك تريگر به نام postbacktrigger را افزود و سپس ControlID آن‌را مساوي كنترلي قرار داد كه جهت ارسال فايل به سرور مشخص كرده‌ايم.
يك مثال:

<asp:UpdatePanel runat="server" id="UpdatePanel1">
<ContentTemplate>
<asp:FileUpload runat="server" id="FileUpload1" />
<asp:Button runat="server" id="btnSubmit" Text="Upload" />
</ContentTemplate>
<Triggers>
<asp:postbacktrigger ControlID="btnSubmit" />
</Triggers>
</asp:UpdatePanel>


به نقل از http://vahidnasiri.blogspot.com

mehdi.mousavi
پنج شنبه 12 آذر 1388, 16:52 عصر
من یک کنترل FileUpload دارم که داخل یک UpdatePanel قرار داره و حتماً می خوام UpdatePanel سرجاش بمونه یعنی نمی تونم اون را حذف کنم. حالا file مورد نظرم را بر می دارم و در زمان درج کردن وقتی کد زیر را می نویسم لطفا راهکار بدید مرسی

سلام.
اگر به Full Postback علاقه ای ندارید، میتونید از روشی که Google در Gmail استفاده کرده، سود ببرید (استفاده از IFRAME ها). راه ساده تر، استفاده از این کنترل (http://en.fileuploadajax.subgurim.net/) یا کنترلهای مشابه هستش.

موفق باشید.

پاورقی: برای توضیح روش iframe لطفا در Google جستجو کنید.

آرام جان گل
شنبه 14 آذر 1388, 08:07 صبح
سلام
من پیشنهاد شمارا اجرا کردم ولی باز هم انگار نمی شناسه و این بار این ارور را می ده




Object Refrence not Set to an Instance an Object

clover
شنبه 14 آذر 1388, 11:46 صبح
من پیشنهاد شمارا اجرا کردم ولی باز هم انگار نمی شناسه و این بار این ارور را می ده

فکر می کنم اشکال از کد هایی هست که برای آپلود نوشته اید. این یه نمونه هست که تست شده .
اگر باز هم مشکلی بود کدها را بذارید تا بهتر بشه راهنمایی کرد.



<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel runat="server" id="UpdatePanel1">
<ContentTemplate>
<asp:FileUpload runat="server" id="fuImageUpload" />
<asp:Button runat="server" id="btnSubmit" Text="Upload" OnClick="btnSubmit_Click" />
</ContentTemplate>
<Triggers>
<asp:postbacktrigger ControlID="btnSubmit" />
</Triggers>
</asp:UpdatePanel>

<asp:TextBox ID="tbPictureURL" runat="server"></asp:TextBox>
<asp:Label ID="lblUploadReport" runat="server" Text="Label"></asp:Label>

</div>


using System.IO; // add this namespace


protected void btnSubmit_Click(object sender, EventArgs e)
{
string imagesFolder = ""; // your image-folder path
string savePath;
string saveFile;

if (fuImageUpload.HasFile)
{
try
{
savePath = Path.Combine(Request.PhysicalApplicationPath, imagesFolder);
saveFile = Path.Combine(savePath, fuImageUpload.FileName);
fuImageUpload.SaveAs(saveFile);
tbPictureURL.Text = '/' + imagesFolder + '/' + fuImageUpload.FileName;
lblUploadReport.Text = "فایل شما با موفقیت آپلود شد .";
}
catch (Exception exUpload)
{
lblUploadReport.Text = exUpload.Message;
}
}
else
{
lblUploadReport.Text = "هیچ فایلی برای آپلود انتخاب نشده است";
}
}
}

آرام جان گل
چهارشنبه 18 آذر 1388, 08:45 صبح
سلام
FileUpload به این روش هایی که گفته شد خوب کار می کنه ولی باز هم یک مشکل داره که اگه FileUpload را در یک panel قرار دهم و Visible این Panel را true و false کنم دیگه FileUpload فایلها را نمی شناسه و دوباره HasFile هیچی بر نمی گرداند

آیا برای این مشکل هم راهی هست؟

کد نمونه


<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:Panel ID="Pnl_FV_Rezomeh" runat="server" Visible ="false">
<table width="100%" dir="rtl">
<tr>
<td style="width: 20%" align="left">
:
</td>
<td style="width: 45%" align="right" valign="top">
<asp:FileUpload ID="FU_ContractRezomeh" runat="server" />
<asp:ImageButton ID="Img_btn_Rezome_Add" runat="server" ImageAlign="AbsBottom" ImageUrl="~/IMG/btn_save_E.gif"
ValidationGroup="1" OnClick="Img_btn_Rezome_Add_Click" />
</td>
<td style="width: 35%" align="right">
<asp:ImageButton ID="Img_btn_Rezome_Delete" runat="server" ImageAlign="AbsBottom"
ImageUrl="~/IMG/btn_Delete_E.gif" BorderStyle="Outset" OnClick="Img_btn_Rezome_Delete_Click" />
</td>
</tr>
</table>
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="Img_btn_Rezome_Add" />
</Triggers>
</asp:UpdatePanel>

alonmahdi
یک شنبه 30 شهریور 1393, 12:50 عصر
سلام
FileUpload به این روش هایی که گفته شد خوب کار می کنه ولی باز هم یک مشکل داره که اگه FileUpload را در یک panel قرار دهم و Visible این Panel را true و false کنم دیگه FileUpload فایلها را نمی شناسه و دوباره HasFile هیچی بر نمی گرداند

آیا برای این مشکل هم راهی هست؟

کد نمونه


<asp:UpdatePanelID="UpdatePanel2"runat="server">
<ContentTemplate>
<asp:PanelID="Pnl_FV_Rezomeh"runat="server"Visible="false">
<tablewidth="100%"dir="rtl">
<tr>
<tdstyle="width: 20%"align="left">
:
</td>
<tdstyle="width: 45%"align="right"valign="top">
<asp:FileUploadID="FU_ContractRezomeh"runat="server"/>
<asp:ImageButtonID="Img_btn_Rezome_Add"runat="server"ImageAlign="AbsBottom"ImageUrl="~/IMG/btn_save_E.gif"
ValidationGroup="1"OnClick="Img_btn_Rezome_Add_Click"/>
</td>
<tdstyle="width: 35%"align="right">
<asp:ImageButtonID="Img_btn_Rezome_Delete"runat="server"ImageAlign="AbsBottom"
ImageUrl="~/IMG/btn_Delete_E.gif"BorderStyle="Outset"OnClick="Img_btn_Rezome_Delete_Click"/>
</td>
</tr>
</table>
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:PostBackTriggerControlID="Img_btn_Rezome_Add"/>
</Triggers>
</asp:UpdatePanel>



سلام منم این مشکل رو دارم کسی می تونه کمکی بکنه؟

fakhravari
یک شنبه 30 شهریور 1393, 17:07 عصر
به هر حال پست بک میخوره در ابدیت پنل یا کار نمیکنه
روش آقای موسوی استفاده از Ifram روش خوبی که پست بک نمیخوره.
یا استفاده از پلاگین های Jquery یا مثل تلریک ...

farzane_t
چهارشنبه 02 مهر 1393, 08:47 صبح
http://www.aspsnippets.com/Articles/Using-FileUpload-Control-inside-ASP.Net-AJAX-UpdatePanel-Control.aspx

haririan2
پنج شنبه 18 تیر 1394, 22:44 عصر
http://www.aspsnippets.com/Articles/Using-FileUpload-Control-inside-ASP.Net-AJAX-UpdatePanel-Control.aspx
ممنون مشکل من حل شد
بهترین لینک را معرفی کردید


<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnAsyncUpload" runat="server"
Text="Async_Upload" OnClick = "Async_Upload_File" />
<asp:Button ID="btnUpload" runat="server" Text="Upload"
OnClick = "Upload_File" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID = "btnAsyncUpload"
EventName = "Click" />
<asp:PostBackTrigger ControlID = "btnUpload" />
</Triggers>
</asp:UpdatePanel>

مشکل من این بود که AsyncPostBackTrigger را اشتباها امتحان میکردم
ولی در لینک بالا هر دو مثال وجود دارد که PostBackTrigger کاملا مشکل را حل کرد