1

我正在处理 ASP.NET 中的文件上传。<input type=file id=upload>我用过<input type=button id="btnupload" value="File Upload">

我想用 JavaScript 上传文件。更新面板不起作用,我不希望它回发并刷新页面。

谢谢,但如果您有与 javascript 中的 fileUpload 相关的代码,请发送给我。请帮我。

4

5 回答 5

3

您可以使用 jQuery 和jQuery 表单插件。我在几个项目中使用了这个组合,我没有问题,即使是大文件(10mb)

<form action="form.asp" method="post">
.......
</form>
$('form').submit(function(){
 $(this).ajaxSubmit(function(data){
  $('#updateDiv').html(data); // or append/prepend/whatever
 })
 return false
})

当然,表单的操作将返回您需要更新的内容。您可能想要添加一些额外的函数来处理错误,但这应该可以正常工作

于 2009-02-09T12:48:04.813 回答
0

使用 jquery 表单插件来实现上传功能 ( http://www.malsup.com/jquery/form/ ) 使用 ( http://www.fyneworks.com/jquery/multiple-file-upload/ ) 来指定多个文件上传

这就是它的工作原理,表单插件可让您将数据发布到页面而无需刷新,多文件插件可让您通过浏览来指定多个文件。

<form id="uploadForm" enctype="multipart/form-data" method="post" action="FileHandler.ashx">
<input type="hidden" value="100000" name="MAX_FILE_SIZE"/>
File:
<input type="file" name="file"/>
<input type="submit" value="Submit"/>
</form>

所以基本上上面的小 html 提交到 FileHandler.ashx,无论输入框中的内容(希望如此),在你的 asp 项目中添加一个 HTTP 处理程序,下面的小代码

<%@ WebHandler Language="C#" Class="FileHandler" %>

using System;
using System.Web;
using System.IO;

public class FileHandler : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
string strFileName = Path.GetFileName(context.Request.Files[0].FileName);
string strExtension = Path.GetExtension(context.Request.Files[0].FileName).ToLower();
string strSaveLocation = context.Server.MapPath("Upload") + "" + strFileName;
context.Request.Files[0].SaveAs(strSaveLocation);

context.Response.ContentType = "text/plain";
context.Response.Write("success");
}

public bool IsReusable
{
get
{
return false;
}
}
}

这里缺少的只是包括你的aspx页面上的js脚本,我想:)祝你好运

于 2009-02-25T12:46:24.370 回答
0

如果您使用的是 Visual Studio 2008(或在 05 中安装了 ajax),则在您的输入字段周围包装一个更新面板,这将使用 javascript (ajax) 异步回发。

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
    <asp:FileUpload ID="FileUpload1" runat="server" />
    <asp:Button ID="Button1" runat="server" Text="Button" />
</ContentTemplate>
</asp:UpdatePanel>
于 2009-02-09T12:45:34.710 回答
0

我不确定使用 ASP.NET 执行此操作的“正确”方式,但通常您需要表单以及表单发布到的隐藏 iframe:

<script type="text/javascript">
    function handleUploadResponse(...) {
        // do something...
    }
</script>
<form method="post" action="upload.aspx" target="hiddenframe" enctype="multipart/form-data"></form>
<iframe id="hiddenframe" name="hiddenframe" style="display:none"></iframe>

当您提交表单时,这将发布到任何脚本将处理隐藏框架中的上传。完成后,隐藏框架的页面调用window.parent.handleUploadResponse(...);它调用handleUploadResponse()父页面上启动上传的函数。

于 2009-02-09T13:50:35.803 回答
-1

如果要阻止页面刷新,请发送204 No ContentHTTP 标头。

于 2009-02-09T12:41:03.410 回答