【问题标题】:how to upload an image file without any postback in ASP.NET如何在 ASP.NET 中上传没有任何回发的图像文件
【发布时间】:2012-12-12 13:28:43
【问题描述】:

我正在使用<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;
}

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

【问题讨论】:

  • 您的意思是您想要 AJAX 上传或页面重新加载通过重置字段等导致您出现问题?
  • 试试这个 stackoverflow 链接:stackoverflow.com/questions/35743/… 谢谢

标签: c# asp.net


【解决方案1】:
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

【讨论】:

  • 感谢您的解决方案......但实施起来有点太晚了......
【解决方案2】:

如果您使用的是 ASP.Net 文件上传器,那么这是不可能的。您可以为此目的使用 Ajax 文件上传器

【讨论】:

    【解决方案3】:

    上传图片无需回传的最佳方式,您可以尝试 Asp.net Ajax 中的 AsyncFileUpload 控件。一个很好的例子在这里:-

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

    谢谢

    【讨论】:

      【解决方案4】:

      我认为您是在询问有关通过部分请求上传文件的问题。使用 ASP.NET 文件上传控件是不可能的。即使它被包裹在更新面板中,它也不起作用。它需要有同步触发器才能使其工作,这意味着它会完全回发。

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

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

      【讨论】:

        【解决方案5】:

        您不能使用简单的 ASP.NET WebForms 来做到这一点。

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

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

        【讨论】:

        • 是的,有像 [Ajax.AjaxMethod] 这样的 Ajax 实现。但我面临的问题是我无法将文件保存在指定目录中。如果可以请详细说明“AJAX”的 Microsoft 实现。
        【解决方案6】:

        为此,您需要使用 ajax。互联网上有很多例子。谷歌一下就行了。

        【讨论】:

        • yenda unakku intha vela
        猜你喜欢
        • 2010-11-26
        • 1970-01-01
        • 2013-01-12
        • 2016-12-06
        • 2020-04-01
        • 2011-06-18
        • 2021-02-21
        • 2010-10-06
        • 2015-12-09
        相关资源
        最近更新 更多