Вывод в IE7 больших файлов
От: andrew2008  
Дата: 17.10.08 16:18
Оценка:
Прошу прощения если не совсем в ту тему пишу.
Мне надо прочитать файл 10Мб. И надо вывести результаты в браузере IE7, то есть запустить программу как cgi скрипт.
Файл читаю так:
std::ifstream in;
...
in.seekg( 0, std::ios_base::end);
std::ifstream::pos_type len = in.tellg();
in.seekg( 0 );
str.resize( len);
in.read( (char*)str.data(), len);
Читает за 3 секунды, с этим все нормально но когда пытаюсь вывести с помощью cout 10Мб строку то IE7 уходит в себя.
Вернее начальный текст он выводит но потом все — крэш. В opera все отрабатывает нормально, но надо именно в IE7?
Кто может чем помочь — буду очень благодарен!!!???

17.10.08 23:08: Перенесено модератором из 'C/C++' — Кодт
Re: Вывод в IE7 больших файлов
От: Sheridan Россия  
Дата: 17.10.08 20:11
Оценка:
andrew2008 однажды (17 октября 2008 20:18) писал в rsdn.web:

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

--
Бортовой журнал
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re: Вывод в IE7 больших файлов
От: Mamut Швеция http://dmitriid.com
Дата: 18.10.08 08:45
Оценка:
Здравствуйте, andrew2008, Вы писали:

A>Прошу прощения если не совсем в ту тему пишу.

A>Мне надо прочитать файл 10Мб. И надо вывести результаты в браузере IE7, то есть запустить программу как cgi скрипт.
A>Файл читаю так:
A>std::ifstream in;
A>...
A>in.seekg( 0, std::ios_base::end);
A>std::ifstream::pos_type len = in.tellg();
A>in.seekg( 0 );
A>str.resize( len);
A>in.read( (char*)str.data(), len);
A>Читает за 3 секунды, с этим все нормально но когда пытаюсь вывести с помощью cout 10Мб строку то IE7 уходит в себя.
A>Вернее начальный текст он выводит но потом все — крэш. В opera все отрабатывает нормально, но надо именно в IE7?
A>Кто может чем помочь — буду очень благодарен!!!???


Загружать кусками аяксом, например. То есть что-то вроде (используя jQuery и taconite):

// на клиенте

function load(start)
{
    $.get(
        url: '/get_file',               // адрес, откуда будем получать файл
        {start: start},                 // передаем в качестве ?start=x откуда начинать считывать файл
        success: function(response){    // в случае успеха вызываем обработку таконайтом
            $.taconite(response);
        }
    );
}

$(document).ready(
    function(){
        load(0);       // сразу начинаем загружать документ
    }
);


с сервера отдавать
<taconite>
    <append select="#id-of-element"><![CDATA[
        текст, который мы вычитали
        с места, которое мы получили в параметре start
        например, 500 к текста
    ]]></append>

    <!-- а теперь вызываем функцию load с новой позицией      -->
    <!-- если файл уже вычитан до конца, то просто            -->
    <!-- пропускаем секцию eval                               -->
    <eval>
        load(new_pos)
    </eval>
</taconite>



с другой стороны я бы задумался, зачем показывать 10МБ текста сразу


dmitriid.comGitHubLinkedIn
Re: Вывод в IE7 больших файлов
От: Sinclair Россия https://github.com/evilguest/
Дата: 20.10.08 05:20
Оценка:
Здравствуйте, andrew2008, Вы писали:
A>Кто может чем помочь — буду очень благодарен!!!???
Ну, для начала нужно отделить мух от котлет — т.е. проблемы твоего скрипта от проблем IE.
Попробуй открыть через IE статический файл с твоим содержимым. Посмотри, как он будет работать.
Если удовлетворительно — ставь http://fiddler2.com и смотри, чем твой скрипт отличается от Апача.
Если неудовлетворительно — то пересмотри свой подход к задаче. Для чего может потребоваться десять метров текста???
Даже 1 мегабайт — это целый роман. Романы редко читаются в браузере; а когда читаются — отдавать весь мегабайт-явное излишество.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.