Это определенно возможно.Насколько мне известно, встроенной поддержки для проверки состояния другого запроса в 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 });
}
Вы быВозможно, вы захотите расширить этот помощник, чтобы сохранить общую длину файла и вернуть процент завершения, но это просто для того, чтобы показать вам, как это можно сделать.