如何在ASP.NET中没有任何回发的情况下上传图像文件

时间:2012-12-27 05:41:17

标签: c# asp.net

我正在使用<asp:FileUpload><asp:button>控件上传文件,但我想在没有回发的情况下执行此操作。单击按钮时,我执行以下代码。

protected void btnUpload_Click(object sender, EventArgs e)
{
    string strFileName = Path.GetFileName(FileUpload1.FileName);  //fileupload1 is the <asp:fileupload ID
    FileUpload1.SaveAs(Server.MapPath("~/UploadFile/" + strFileName + ""));
    imgUpload.ImageUrl = "../UploadFile/" + strFileName + "";  //imgupload is the <img ID on which I am showing the image after upload
    imgUpload.Visible = true;
}

上传文件后,我在项目解决方案中显示指定文件夹中已保存的图像,但点击上传按钮后整个页面都会被加载,我不希望单击上传按钮进行回发。

6 个答案:

答案 0 :(得分:3)

just add the script

    <script language="javascript">
        function Change(obj) {
             __doPostBack("<%= btnUpload.ClientID %>", "");
        }

      </script>


Call the script in your button click event like this 
<pre>
onchange="Change(this);"
</pre>   

Your image control added in the update panel with contentTemplate 

    <asp:FileUpload ID="imgFileUploader" runat="server"   />
             <asp:Button ID="btnUpload" runat="server"  
         Text="Upload" onclick="btnUpload_Click" onchange="Change(this);" />
      <br />
        <br />
     <asp:ScriptManager ID="ScriptManager1" runat="server">
     </asp:ScriptManager>
  &nbsp;<asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>    
               <img id="imgOrginal" runat="server" style="height: 200px; width: 200px;" />
              </ContentTemplate>
      </asp:UpdatePanel>

for more details

答案 1 :(得分:1)

我认为您要求通过部分请求上传文件。使用ASP.NET文件上传控件是不可能的。即使它被包装在更新面板内,也无法正常工作。它需要具有同步触发器才能使其正常工作,这意味着它可以完全回发。

如果您使用的是ASP.NET AJAX,请检查asyncfileload控件和新添加的“Ajax文件上传”控件。这些控件存在于Ajax控件工具包中。请仔细阅读文档,因为每个文档都有其局限性。

如果它们不符合您的需求,请尝试开源Ajax文件上传控件,如整齐上传等。

答案 2 :(得分:1)

如果您使用的是ASP.Net文件上传器则无法使用..您可以使用Ajax文件上传器来实现此目的

答案 3 :(得分:1)

在没有任何回发的情况下上传图像的最佳方式,您可以在Asp.net Ajax中尝试AsyncFileUpload控件。这里有一个很好的例子: -

http://www.aspsnippets.com/Articles/Using-ASP.Net-AJAX-Control-Toolkits-AsyncFileUpload-Control.aspx

三江源

答案 4 :(得分:0)

使用简单的ASP.NET WebForms无法做到这一点。

对所谓的page lifecycle进行一些研究。像你所包含的方法背后的代码是/只能作为回发或服务器端操作的一部分执行。

如果您希望客户端 - 服务器交互而不回发,那么您需要使用javascript。你可以在ASP.NET中使用javascript,我相信在.NET框架中有一个Microsoft实现的'AJAX'。

答案 5 :(得分:0)

您需要为此目的使用ajax。互联网上有很多例子。只是谷歌吧。