[ASP.NET] 解决因为使用 updatepanel 导致 fileupload 始终无法获取文件的方法
阅读原文时间:2023年07月12日阅读:1

接手了一个新项目,需要在老项目中增添几个新页面

由于在母版页中的updatepanel包住了子版页

同时updatepanel并不支持文件上传,因此要额外增加一些设置

具体的情况可以参考这篇博客

https://www.cnblogs.com/insus/p/3208744.html

下面针对我自己的情况进行设置

前端控件的设置:

母版页的设置:

将 asp:ToolkitScriptManager 的 AjaxFrameworkMode 属性设置为 enabled 即可

子版页的设置:

updatepanel要被包含在标签内,否则会出错(可能是我的框架太老或者其他原因)

额外的再在文件上传的控件外层套一个updatepanel,并将其updatemode设置为conditional

同时加入指向实现上传方法的控件,防止因为postback将文件给刷新掉从而获取不到文件

          文件上傳




                     </ContentTemplate>
                     <Triggers>
                         <%--//可以指向模板外的控件,該功能是防止回傳刷新后導致獲取不到文件--%>
                         <asp:PostBackTrigger ControlID="SIMP\_submit" />
                     </Triggers>
                 </asp:UpdatePanel>
             </td>

后端代码实现:

//整個子版都處於updatepanel中,而updatepanel并不支持上傳,要另行設置,已設置完畢,具體參考aspx頁面
protected void SQE_Uploadfiles()//將文件上傳的功能封裝在這裡進行調用即可
{
#region 上傳文件事件
if (SQE_FileUpload.HasFile)//判斷有無文件
{
string fileName = SQE_FileUpload.PostedFile.FileName;//獲取文件名
);//獲取文件類型
string SUPath = ConfigurationManager.AppSettings["SIMPUserUpload"].ToString().Replace("~/", "");//獲取服務器存放文件的路徑
string Newfilefolder = Path.GetFullPath(SUPath + Abnormal_No.Text);//轉換成正確的文件夾路徑,..\Files\SIMPUserUpload\"流水號"
string NewfileName = Abnormal_No.Text + "." + fileType;//文件名(流水號).(文件類型)
string NewfilePath = Newfilefolder + "\\" + NewfileName;//在..\Files\SIMPUserUpload\"流水號"\文件夾中放入文件

             if (!Directory.Exists(Newfilefolder))//檢查有無該文件夾,如果沒有就自動創建
             {
                 try
                 {
                     Util.CreateDirectory(Newfilefolder);
                 }
                 catch (Exception x)
                 {
                     //ShowMessage("創建文件夾失敗!");
                     UFstate = ";
                     return;
                 }
             }

             try
             {
                 SQE\_FileUpload.SaveAs(NewfilePath);//存儲文件到該路徑下
                 //ShowMessage("上傳成功!");
                 Fpath = NewfilePath;//回傳路徑
                 return;
             }
             catch (Exception ex)
             {
                 //ShowMessage("上傳失敗 !");
                 UFstate = ";
                 return;

             }               

         }
         else
         {
             return;
             //ShowMessage("请选择要上传的文件!");
             //Response.Write("<p >请选择要上传的文件!</p>");
         }

         #endregion
     }

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章