Скачайте и откройте файл в jQuery - PullRequest
4 голосов
/ 09 августа 2011

Я загружаю файл, просматривая страницу .aspx и возвращая файл

HttpContext.Current.Response.ContentType = "APPLICATION/OCTET-STREAM";
String Header = "Attachment; Filename=" + sFileName;
HttpContext.Current.Response.AppendHeader("Content-Disposition", Header);
FileInfo Dfile = new FileInfo(HttpContext.Current.Server.MapPath(sFilePath));
HttpContext.Current.Response.WriteFile(Dfile.FullName);
HttpContext.Current.Response.End();

, и это нормально.

Я хочу сделать это с помощью асинхронного вызова ajaxиспользуя jQuery, чтобы во время загрузки файла пользователь видел анимацию GIF Spinner.

$("#showbusy").fadeIn();
$.ajax({ async : true, type: "GET", url: "download.aspx",
        contentType: "application/text; charset=utf-8",
        success: function (data) {
            $("#showbusy").hide();
        },
        error: function (xmlHttpRequest, textStatus, errorThrown) {
            $("#showbusy").hide();
        }
    });

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

Как мне вызвать диалоговое окно сохранения файла на стороне браузера после получения данных загрузки файла?

1 Ответ

0 голосов
/ 05 декабря 2011

Загрузка должна быть начата через диалоговое окно сохранения, чтобы пользователь мог поместить ее на свой диск.

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

Тем не менее, вы можете сделать так, чтобы пользователь казался мгновенным, выполнив вызов для загрузки файла через ajax (что вы сейчас делаете), предоставив заголовки кэша ответов при отправке содержимого и затем откройте диалоговое окно загрузки (например, через iframe) для того же URL-адреса, что и в вызове AJAX. В результате браузер сохранит файл из своего кэша (созданного при выполнении вызова AJAX) на диск пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...