我正在从事ASP.NET上的文件上传工作。我使用了<input type=file id=upload>
和<input type=button id="btnupload" value="File Upload">
我想用JavaScript上传文件。更新面板不起作用,我不希望它回发并刷新页面。
谢谢,但如果您在javascript中有与fileUpload相关的代码,请发送给我。请帮我。
答案 0 :(得分:3)
您可以使用jQuery和jQuery form plugin。我在很少的项目中使用这个组合,我没有任何问题,即使对于大文件(10mb)
<form action="form.asp" method="post">
.......
</form>
$('form').submit(function(){
$(this).ajaxSubmit(function(data){
$('#updateDiv').html(data); // or append/prepend/whatever
})
return false
})
当然,表单的操作将返回您需要更新的内容。您可能需要添加一些额外的函数来处理错误,但这应该可以正常工作
答案 1 :(得分: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>
答案 2 :(得分: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()
函数。
答案 3 :(得分: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脚本,我认为:)祝你好运
答案 4 :(得分:-1)
如果您想阻止刷新页面,请发送204 No Content
HTTP标头。