用户可以向一组用户发送提醒。警报将汇总文本和(操作上)附加文件。问题是,当文件变大时,上传时间会更长,UI也会被占用。
这就是我想要做的事情:发布表单后,我希望在后台完成上传,例如使用新线程。背后的想法是用户可以在上传文件时继续工作。
我已经阅读了线程如何工作,我不仅仅看到如何在服务器端应用线程时应用它。
感谢您指点解决方案。
我正在使用ASP.NET MVC 2.O
答案 0 :(得分:0)
如果你谈论ASP.NET,你首先要从工具箱中添加 ScriptManager (在AJAX Extensions下)。
然后添加 AsyncFileUpload 控件(来自AjaxToolKit)。
此控件在属性中具有OnClientUploadComplete事件。将其绑定到一个功能,例如 uploadComplete 。
您的ASPX代码应如下所示:
<head runat="server">
<title></title>
<script type = "text/javascript">
function uploadComplete(sender) {
$get("<%=Label1.ClientID%>").style.color = "blue";
$get("<%=Label1.ClientID%>").innerHTML = "Successfully Uploaded";
}
function uploadError(sender) {
$get("<%=Label1.ClientID%>").style.color = "red";
$get("<%=Label1.ClientID%>").innerHTML = "Upload failed.";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:Label ID="Label2" runat="server" Text="Asynchronous File Uploading"
ForeColor="#000066"></asp:Label>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:AsyncFileUpload OnClientUploadError="uploadError"
OnClientUploadComplete="uploadComplete" runat="server"
ID="AsyncFileUpload1" Width="400px" UploaderStyle="Modern"
CompleteBackColor = "White"
UploadingBackColor="#CCDDEE" ThrobberID="inProgress"
OnUploadedComplete = "FileUploadComplete"
/>
<asp:Image ID="inProgress" runat="server" ImageUrl = "~/inProgress.gif" />
<br />
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>
</form>
</body>
您的代码隐藏文件(.cs)应如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class AjaxUploadFile : System.Web.UI.Page
{
protected void FileUploadComplete(object sender, EventArgs e)
{
string savePath = @"F:\BLOG\Projects\InsertData\UploadedFiles\";
string filename = AsyncFileUpload1.FileName;
if (AsyncFileUpload1.HasFile)
{
savePath += filename;
AsyncFileUpload1.SaveAs(savePath);
}
}
}
这应该为您提供所需的异步文件上传功能。您可以从http://www.asp.net/ajaxlibrary/AjaxControlToolkitSampleSite/
获取AjaxToolKit