只是想知道是否可以从另一个请求中获取请求的状态?
为了帮助提供一些上下文,我想使用ajax将一些文件上传到服务器。当上传开始时,我想触发另一个ajax请求,该请求检查文件的上传量(或者换句话说,另一个请求有多大,接收请求的时间是服务器)。
我在想我可以使用guid或类似的东西来确保我正在检查正确请求的状态。但是我如何检查另一个请求的状态???
干杯 安东尼
答案 0 :(得分:1)
这绝对有可能。据我所知,在ASP.NET MVC中没有内置支持检查另一个请求的状态,但实现起来并不难。
public static UploadStatusHelper {
static Dictionary<string, int> uploads = new Dictionary<string, int>();
static object lockObj = new object();
public static void SetStatus(string key, int bytesComplete) {
lock(lockObj) {
uploads[key] = bytesComplete;
}
}
public static void GetStatus(string key) {
lock(lockObj) {
int bytesComplete = 0;
if(uploads.TryGetValue(key, out bytesComplete) {
return bytesComplete;
}
return 0;
}
}
}
当您在服务器上阅读上传文件的一大块时,您可以调用
UploadStatusHelper.SetStatus(theKey, bytesRead);
然后使用Ajax,您可以定期向返回进度的操作发起HTTP POST请求,例如
[HttpPost]
public ActionResult GetProgress(string key)
int bytesRead = UploadStatusHelper.GetStatus(key);
return Json(new { bytesRead = bytesRead });
}
您可能希望扩展此帮助程序以存储文件的总长度并返回完成百分比,但这只是为了向您展示如何完成它。
答案 1 :(得分:0)
您可能希望查看implementing Asynchronous requests in ASP.NET MVC或类似内容。