0

我正在使用 asp.net fileupload control 上传文件,每当由于页面上的其他字段而发生回发时,文件上传控件中的选定路径就会丢失。我在页面上使用多个文件上传控件进行差异。目的如何解决这个问题?亲爱的,请帮忙举一个简单而合适的例子。

string file = Path.GetFileName(UploadSalesServiceCopy.PostedFile.FileName);
string filepath2 = ConfigurationManager.AppSettings["ServerMapImgPath"].ToString();//.......local drive path via web config
string subPath = filepath2 + file;
bool IsExists = System.IO.Directory.Exists(Server.MapPath(subPath));
if (!IsExists)
    System.IO.Directory.CreateDirectory(Server.MapPath(subPath));

if (UploadSalesServiceCopy.HasFile)
{
    //UploadSalesServiceCopy.SaveAs(subPath);//PHYSICAL path
    UploadSalesServiceCopy.SaveAs(Server.MapPath(subPath));//server path             
}
else
{
    ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "javascript", "alert('No File Selected.')", true);
}
4

3 回答 3

0

如果您使用带有更新面板的 asp.net 文件上传控件。那么问题是文件上传控件与部分回发不兼容。

<asp:FileUpload ID="fpTest1" runat="server" />
<asp:FileUpload ID="fpTest2" runat="server" />
<asp:UpdatePanel ID="up" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Button ID="btnActions" runat="server" Text="Other Actions" >
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button ID="test" runat="server" OnClick="test_Click" Text="Upload File" />

您可以看到,当您单击其他操作按钮时,文件上传将具有值。

将 Post back 控件放在更新面板中,并将文件上传控件放在更新面板之外。

于 2013-04-25T09:48:42.690 回答
0

在点击 Upload 按钮时...您的页面首先重定向到 Page_load 事件,您可以在其中设置页面值。为此在

page_load(..)
{
   if(!IsPostBack)
   {
      ..setpagevalues();
   }
}

那个主要的……你得到的是空路径……试试看……

于 2013-04-25T07:24:22.587 回答
0

您只需将 fileupload 与updatepanel一起使用,并将 ViewStateMode="Enabled"放入fileupload。

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
<asp:FileUpload ID="FileUpload1" runat="server" ViewStateMode="Enabled"/>
 </ContentTemplate>
        </asp:UpdatePanel>
于 2014-03-12T07:55:05.393 回答