IE7 возникают проблемы при перенаправлении на большие файлы Excel - PullRequest
2 голосов
/ 15 декабря 2008

У нас есть страница в нашей веб-системе asp.net, которая использует response.redirect для перенаправления пользователя непосредственно в файл Excel, поэтому он будет загружаться «автоматически» без необходимости щелкнуть правой кнопкой мыши или сохранить как.

Это прекрасно работает - за исключением файлов размером более 100 КБ в IE7. Другие браузеры просто прекрасно скачивают большой файл, и IE прекрасно работает под этим порогом, но где-то около 200 КБ, IE просто начинает раздавать ошибки «страница не может отображаться».

Очевидно, мы бы хотели, чтобы пользователь также мог загружать в IE - есть идеи? Есть ли какой-то порог размера загрузки, который я могу переопределить?

Ответы [ 2 ]

2 голосов
/ 15 декабря 2008

Вы можете создать простую оболочку из Ashx вокруг этого файла и заставить IE загрузить этот файл, используя заголовок http: "Content-disposition: attachment; filename = fname.xls"

Как вызвать диалоговое окно «Загрузка файла» для известного типа MIME

1 голос
/ 15 декабря 2008

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

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

Public Shared Sub SendFileToBrowser(ByRef response As HttpResponse, ByVal filepath As String, Optional ByVal filename As String = "", Optional ByVal contentType As String = "", Optional ByVal disposition As String = "", Optional ByVal contentLength As String = "")
    Dim ext As String = filepath.Substring(filepath.Length - 3, 3)

    If String.IsNullOrEmpty(contentType) Then
        If ext = "pdf" Then
            contentType = "application/pdf"
        Else
            contentType = "application/file"
        End If
    End If

    If String.IsNullOrEmpty(disposition) Then
        disposition = "attachment"
    End If

    If String.IsNullOrEmpty(filename) Then
        ''//Test for relative url path
        Dim fileparts As String() = filepath.Split("/")
        If fileparts.Length > 1 Then
            filename = fileparts(fileparts.Length - 1)
        Else
            ''//Test for absolute file path
            Dim fileparts2 As String() = filepath.Split("\")     ''//" SO: Fix syntax highlighting
            If fileparts2.Length > 1 Then
                filename = fileparts2(fileparts2.Length - 1)
            Else
                ''//Just give it a temp name
                filename = "temp." & ext
            End If
        End If
    End If

    response.Clear()

    response.AddHeader("content-disposition", disposition & ";filename=" & filename)
    If Not String.IsNullOrEmpty(contentLength) Then
        response.AddHeader("Content-Length", contentLength)
    End If

    response.ContentType = contentType

    response.Cache.SetCacheability(HttpCacheability.Public)        

    response.TransmitFile(filepath)
    response.End()
End Sub

Примечание: Использование "'' //" для комментариев, чтобы подсветка синтаксиса работала правильно. Это все еще правильно компилируется.

Это работает для нас в IE6 и IE7.

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