Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Загрузка контента большого файла, для получения md5 file (http://www.flasher.ru/forum/showthread.php?t=142147)

chiffa_cff 14.07.2010 00:03

Загрузка контента большого файла, для получения md5 file
 
Добрый день. Есть следующая задача: необходимо получить хеш файла (md5). Делаю следующий образом: загружаю содержимое файла в переменную, дальше через класс MD5.as беру хеш, так получаю md5_file. Все классно работает на маленьких файлах, если же файлы большие например метров 10 (не говоря уже за 100 мб и больше), то зависает и отбраковывает ошибку т.к. не вкладывается в 15 сек.

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

На данный момент читаю так:

Код AS3:

var loader:URLLoader = new URLLoader(new URLRequest("E:/mp3/Artyr.mp3"));
loader.addEventListener(Event.COMPLETE, completeHandler);
function completeHandler(event:Event):void {
    var loadedText:URLLoader = URLLoader(event.target);
 
trace (loadedText.data);   
}


Уже второй день трясу Инет - ничего не могу найти. Заранее спасибо за помощь!

Сайлас 14.07.2010 00:16

1. А может лучше у файлов crc брать, а не мд5, он как бы значительно быстрее?
2. Пробовали более быстрый мд5 "от Бладди" (http://www.flasher.ru/forum/blog.php?b=217)? (с) :)

Добавлено через 4 минуты
3. http://code.google.com/p/as3corelib/...o/MD5Stream.as вот кстати еще что, если это привязать к blooddy.crypto - то может получиться что нужно (хотя сами привязать не сможете, попробуйте прям тот мд5стрим)

chiffa_cff 14.07.2010 00:35

Спасибо за ответ! Но я не программирую на Флэшь и знаю только основы...

Насколько я понимаю моя проблема не в том, что медленно работает обработка мд5 (хотя может до этого просто не доходит :)), а в том что медленно грузит в переменную содержимое файла (например если это ави на метров этак 700, то "мама не горюй"...). Может есть какой то более оптимальный способ получения хеш файла?

BlooDHounD 14.07.2010 01:12

загрузка происходит асинхронно. она не может вызвать ошибку таймаута. а вот md5 может. моя библиотека работает в ~120 раз быстрее. попробуйте.

Сайлас 14.07.2010 01:17

Цитата:

Сообщение от BlooDHounD (Сообщение 922105)
загрузка происходит асинхронно. она не может вызвать ошибку таймаута. а вот md5 может. моя библиотека работает в ~120 раз быстрее. попробуйте.

А что-то меня цель загрузки смущает?
Если разговор о 100-700 метровом файле, то как браузер отнесется к тому, что флеш попытается аллокейтить столько в памяти?
И наверное так или иначе стримовая обработка мд5 будет лучше.

chiffa_cff 14.07.2010 01:42

Не подскажете как правильно подключить библиотеку, как правильно вызвать функцию и записать результата в переменную?...

Извиняюсь за глупые вопросы, но AS для меня абсолютно ново...

BlooDHounD 14.07.2010 14:29

Сайлас, ну если подсчёт md5 за 200+ секунд приемлем, тогда стрим будет лучше.

chiffa_cff, а как Вы это делали с as3corelib? как вы её подключали?

Сайлас 14.07.2010 14:31

А если к вашему мд5 написать стримовую обработочку, что потенциально получится?

chiffa_cff 14.07.2010 15:09

BlooDHounD, нашел готовый пример и отредактировал :) Так что если есть возможность выложить пример буду весьма признателен....

BlooDHounD 14.07.2010 15:30

chiffa_cff, ну с моей библиотекой можно поступить так же.

Сайлас, у меня ~5 метров обрабатывается за ~31ms ( можете сравнить с корелиб ). но вообще загрузить 700 метров скорее всего не удастся. ФП просто не даст обработать такой большой бинарник. скажет, что не может выделить столько памяти.


Часовой пояс GMT +4, время: 04:29.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.