需要一些关于使用ajax上传文件的想法

时间:2011-10-30 13:20:56

标签: asp.net ajax

我想在我的aspx页面上的主机上传一个图像。但我可以用ajax吗?(我的意思是,在上传期间没有回发)。

我看看gmail文件上传器,经典模式使用亚麻(这是个坏主意)但我能理解现代模式吗?!!

根据我在谷歌的搜索,出于安全原因可能无法发生

有些人帮我解决了这个问题。“使用ajax上传文件”

1 个答案:

答案 0 :(得分:1)

你可以这样做..使用ajax .....

第1步:首先在单独的页面中创建一个上传表单,如下所示(myIframe.html)

 <form method="POST" target="_self" enctype="multipart/form-data" action="main.aspx">
  <input type="file" name="fileUpload" />
  <input type="submit" value="UPLOAD" />
  </form>

第2步:在主页面(main.aspx)中,您必须放置一个iframe并将该页面加载到其中。你也可以使边框不可见,所以它看起来不像是iframe。

<iframe name="iUploadFrame" src="myIframe.html" frameborder="0" onload="iUploadFrameLoad();"></iframe>

请注意,这是指定javascript的onload事件处理函数。那个人会在下面解释。

第3步:为了测试,在main.aspx和UpdatePanel中使用按钮和标签进行测试:

<asp:UpdatePanel ID="pnlMain" runat="server">
<ContentTemplate>
<asp:Label id="lblMessage" runat="server" />
<asp:Button id="btnUploadComplted" runat="server" style="visibility:hidden;" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnUploadCompleted" EventName="Click" />
</Triggers>
</asp:UpdatePanel>

请注意,如果您希望可以使用CSS样式隐藏按钮,但不能设置visible =“False”属性。这是因为如果你想在输出文档中使用按钮html并希望通过该按钮触发ajax回调。

第4步:您可以在代码隐藏中定义按钮的点击事件处理程序,如下所示:

 protected void btnUploadCompleted_Click(object s, EventArgs e) {
        lblMessage.Text = "UPLOAD PROCESS COMPLETED SUCCESSFULLY";
    }

STEP:5 现在,要保存文件,您可以在代码隐藏中编写代码,如下所示:

protected void Page_Load(object s, EventArgs e) {
    if ((Request.Files.Count == 1)) {
        //  process to save file
        Response.Write("SUCCESS");
        Response.End();
    }
}

STEP:6 现在我们需要做的就是创建javascript函数,将流程集成到ajax实现中。该事件将在上传过程完成时触发,然后它将触发btnUploadCompleted的click事件,该事件负责进行ajax调用。

<script type="text/javascript">
function iUploadFrameLoad() {
if (window.iUploadFrame.document.body.innerHTML == "SUCCESS") {
document.forms[0].elements[btnUploadCompleted].click();
}
}
</script>

我希望它会帮助你...