在ASP.NET中,要实现文件上传后自动回发,可以使用AJAX来实现。以下是一个简单的示例:
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="上传" OnClick="Button1_Click" />
protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
string fileName = Path.GetFileName(FileUpload1.FileName);
FileUpload1.SaveAs(Server.MapPath("~/") + fileName);
// 处理文件上传后的逻辑
}
}
$(document).ready(function () {
$("#<%=FileUpload1.ClientID%>").on("change", function () {
var formData = new FormData();
formData.append("file", $("#<%=FileUpload1.ClientID%>")[0].files[0]);
$.ajax({
url: "upload.ashx",
type: "POST",
data: formData,
contentType: false,
processData: false,
success: function (response) {
// 处理文件上传后的逻辑
},
error: function (error) {
// 处理错误
}
});
});
});
</script>
在上述代码中,我们使用jQuery的on方法监听FileUpload控件的change事件,当用户选择文件后,会自动触发AJAX请求,将文件数据发送到服务器端的upload.ashx处理程序中。在服务器端,可以使用HttpContext.Current.Request.Files来获取上传的文件数据,并进行相应的处理。
需要注意的是,由于浏览器的安全限制,不能直接使用AJAX上传文件,因此需要使用FormData对象来包装文件数据,并将contentType和processData设置为false。
最后,需要在服务器端创建一个upload.ashx文件,用于处理文件上传。在该文件中,可以使用HttpContext.Current.Request.Files来获取上传的文件数据,并进行相应的处理。
领取专属 10元无门槛券
手把手带您无忧上云