я делаю в загрузке изображения, как это:ASP.NET не отправляет информацию о процессе загрузки на клиент
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", function (e) {
// THIS DOESN'T UPDATE UNTIL THE END. EVEN WITH A 10MB IMAGE
}, false);
xhr.open('POST', 'https://www.coolsite.com/api/upload', true);
reader.onload = function (evt) {
var blob = new Blob([evt.target.result]);
var formData = new FormData();
formData.append('image', blob);
xhr.send(formData);
};
reader.readAsArrayBuffer(file);
Затем на сервере я прочитал это так:
public class VideoController : CORSController
{
ImageSaver imageSaver = new ImageSaver();
public HttpResponseMessage Post()
{
Stream imageStream = HttpContext.Current.Request.Files[0].InputStream;
imageSaver.save(imageStream);
return new HttpResponseMessage { StatusCode = HttpStatusCode.OK };
}
}
public class CORSController : ApiController
{
public HttpResponseMessage Options()
{
return new HttpResponseMessage { StatusCode = HttpStatusCode.OK };
}
}
Но дело это клиент получает событие прогресса только после того, как файл будет загружен, даже если я использую огромные файлы изображений. Я искал ответ на этот вопрос и пробовал различные конфигурации для присоединения события прогресса, но ничего не работает. Я думаю, что я делаю что-то неправильно на сервере.
ПРИМЕЧАНИЕ. Это загрузка CORS, поэтому, возможно, это имеет какое-то отношение к ней.
Ваш код на стороне сервера не реагирует с какого-либо прогресса. И% uploaded не является функцией из mvc. Чтобы получить% завершенного значения прогресса, вы, вероятно, должны использовать SignalR, как это. Код вашей серверной части не отвечает никаким прогрессом. И% uploaded не является функцией из mvc. Чтобы получить% завершенного значения прогресса, вы, вероятно, должны использовать SignalR, как это http://stackoverflow.com/a/27526294/623799. – GavKilbride