Можно ли определить, действительно ли загруженный файл

Предположим, у меня есть метод действия контроллера, который возвращает FileResult, Можно ли определить, был ли файл полностью загружен на клиент?

public ActionResult GetFile(int id)
{
    DownloadInfo data = provider.GetInfo(id);
    this.provider.MarkDownloadStart(id);

    return File(Server.MapPath(data.Filename), "application/pdf");
}

Я храню информацию, когда вызывается действие, но это только означает, что кто-то инициировал загрузку. Это не дает мне никакой информации на сервере, была ли загрузка завершена...

Я также установил заголовок расположения содержимого, чтобы файл, вероятно, никогда не открывался непосредственно в браузере, а браузер запрашивает его открытие / сохранение. Это облегчает для клиента сохранение файла...

Мое мышление

Я полагаю, что невозможно непосредственно определить, что загрузка действительно произошла. но возможно ли сделать это как-то иначе:

  1. загрузка представления,
  2. имеет iframe тот
  3. запрашивает файл и
  4. основной вид контролирует загрузку на клиенте, потому что он имеет доступ к iframe поэтому он видит, закончил ли файл загружать или нет.

Хотя верхний сценарий может показаться осуществимым, я не знаю, как на самом деле сделать это наблюдение. Может быть, есть какой-то другой - лучший - способ выполнить эту задачу.

Основным вопросом является

Можно ли обнаружить на сервере, что клиент полностью завершил загрузку файла и не отменил его между загрузками?

2 ответа

Вы можете использовать куки. Вот пример. Вот некоторые из шагов, вовлеченных в процесс:

  1. На клиенте сгенерируйте какой-то уникальный идентификатор.
  2. Отправьте запрос в действие загрузки, передав этот уникальный идентификатор.
  3. Использовать window.setInterval регулярно запрашивать наличие cookie и проверять его значение.
  4. Если файл cookie создан и его значение совпадает с уникальным идентификатором, загрузка завершена.

И на сервере установите значение cookie для уникального идентификатора после завершения потоковой передачи файла в ответ.

Пожалуйста, посетите этот URL

http://odetocode.com/blogs/scott/archive/2010/06/23/checking-client-download-success-with-asp-net-mvc.aspx

надеюсь, это поможет вам

Другие вопросы по тегам