IE8 на некоторых страницах не работает загрузка файла

Я разрабатываю приложение, которое позволяет пользователю загружать файл excel с обычным содержимым (не больше нескольких МБ).

В IE9 файл загружается отлично, но в IE8 некоторые страницы, позволяющие загрузку, не работают.

Новая страница открывается и сразу же закрывается без отображения панели загрузки.

Заголовок управления кешем имеет значение private.

Я отключил все свои добавления IE8.

Я сопоставил ответ сервера как для страницы, которая позволяет сохранять файл, так и для той, которая не работает, и они точно совпадают (кроме пути)

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

Вот код на стороне сервера, который я использую для загрузки файла:

protected void GetExportedFile()
{
    string filename = Form("filename");

    if (string.IsNullOrEmpty(filename))
    {
        Logger.Instance.Write("GetExportedFile is missing the parameter filename");
        Response.Redirect("ErrorPage.aspx");
    }

    string filePath = Context.Server.MapPath("****/****/" + filename);

    Response.ClearHeaders();
    Response.ClearContent();
    SetContentType(ContentType.Excel);
    Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", filename));
    Response.WriteFile(filePath);

    Response.Flush();

    try
    {
        File.Delete(filePath);
    }
    catch (Exception ex)
    {
        Logger.Instance.Write(
            "GetExportedFile failed to delete the file '" + filePath + 
            "', Error: " + ex.ToString(), "Error");
    }

    try
    {
        Response.End();
    }
    catch (ThreadAbortException ex)
    {
        //Don't add anything here.
        //because if you write here in Response.Write,
        //that text also will be added to your text file.
    }
}

Я должен упомянуть, хотя я не думаю, что это уместно, что перед загрузками, которые не работают в IE8, я делаю несколько вызовов ajax, чтобы получить уведомление, если генерация excel завершена, а на странице, которая работает, я этого не делаю процедура.

Я также хотел бы добавить, что мое приложение находится за брандмауэром приложений (F5), и когда он деактивирован, все загрузки работают в IE8, проблема в том, что я не вижу никаких изменений в ответе.

Благодарность


person AMember    schedule 11.04.2013    source источник
comment
Содержит ли ваша переменная имени файла расширение файла?   -  person Rich Andrews    schedule 13.04.2013
comment
да расширение файла xlsx   -  person AMember    schedule 13.04.2013


Ответы (1)


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

Поскольку я вызывал серию вызовов ajax на сервер, запрашивая состояние создания файла, и когда файл был готов, выдавался вызов загрузки, IE отменил его.

Чтобы переопределить политику IE8, когда создание файла завершено, я открыл клиенту окно со ссылкой на файл, и когда эта ссылка была нажата, файл был успешно загружен.

Я надеюсь, что это поможет кому-то однажды...

person AMember    schedule 29.05.2013