Python сервер для локальных файлов
Написал небольшой питон сервер для записи/чтения небольших локальных файлов.
Этот TCPServer можно использовать для поделок вроде редактора карт или самодельного граф редактора и пр. те вместо FileReference.save
Пользоваться легко, надо запустить командную строку, затем перетащить файл TCPServer.py в командную строку, нажать энтер, если на компьютере установлен python 2.6 в командной строке появится
Код:
Microsoft Windows XP [Версия 5.1.2600] (С) Корпорация Майкрософт, 1985-2001. D:\FLEX\fileSis\lex\fileSis>D:\FLEX\fileSis\TCPServer.py Server loop running in thread: Thread-1
//просмотр файловой системы var fileSis:FileSis = new FileSis(); fileSis.changeDirectory(''); fileSis.doneCallBack = navFileSisDoneCallBack; function navFileSisDoneCallBack():void { trace('navFileSisDoneCallBack'); trace(fileSis.curDir);//текущая директория trace(fileSis.pathArr);//архив с названиями папок trace(fileSis.fileArr);//архив с названиями файлов } //чтение файла var fileReader:FileReader = new FileReader(); fileReader.startProcessReadFile('my file.txt'); fileReader.doneCallBack = fileReaderDoneCallBack; function fileReaderDoneCallBack():void { trace('fileReaderDoneCallBack'); //fileReader.totalByteArr - это содержимое файла } //запись файла var fileWriter:FileWriter = new FileWriter(); fileWriter.writeFile('may file.txt', ba); //тоже есть каллБак завершения записи doneCallBack
В демо проекте примитивный текстовый редактор (он сохраняет и читает файлы не только текстовые, но читает их как утф8, так-что если это был экзешник то он поплющится), кто-то чего-то себе удалит или перепишет важные файлы, я не виноват.
Там есть кнопки открыть, сохранить, сохранить как и окошко для выбора файла и перехода по папкам.
Новая версия (а старая то-же работает) в новой версии уже не кодируется по базе64, с флешевским Socket ниче не получилось из-за непонятного секуритиЭвента. Однако питон оказался хорош, питоновскому серверу можно обрашаться через урлЛоадер, отдавать команды или целые байтары в реквесте. В этой версии используется урлЛоадер.
public class Doc extends Sprite { private var fileSis:FileSis; public function Doc() { fileSis = new FileSis(); fileSis.doneCallBack = fileSisDoneCallBack; fileSis.changeDirectory(''); } private function fileSisDoneCallBack():void { if (fileSis.operation == 'changeDirectory') { //fileSis.curDir //fileSis.fileArr //fileSis.pathArr } if (fileSis.operation == 'readFile') { //fileSis.readFileName //fileSis.readFileByteArray } if (fileSis.operation == 'writeFile') { } } }
В деме граф редактор, загружать можно любые кртинки (jpg, gof, png) сверху на них рисовать и сохранять, но сохраняется только в png. (расширение дописывать не надо оно само прописывается)
Небольшой тутор-видио обзор
http://youtu.be/IXCzKYmVuLo
Всего комментариев 21
Комментарии
![]() ![]() |
|
Спасибо хорошая тема.
|
![]() ![]() |
|
>>Я чего-то не очень понимаю - зачем кодировать все в Base64?
Если не кодировать в базе64, то не то что поток, а прямо водпад секуритиЕвентов сыпется, но если в конце нет нулевого байта, то секуритеЕрор 100%. >>А про разбиение на куски - разбивать надо в соответствии с MTU, который может быть от 576 до 1500 Я вообще не знаю что это MTU, просто если допустим 5 мегабайт файл читать без разбиения, что мой компик с процом 1800Мегагерц виснет, приходится через диспетчер задач закрывать флеш плеер, а именно кусками 131072 байт, нормально, то-же подвисает, но более менее и где-то читал, что кратное 2 самое то. А с другой стороны А я передаю бинарник, без кодирования в базе64 никак не обойтись, тк. xml это текст, а в бинарниках и нулевые байты и любые байты. |
|
Обновил(-а) Alex Lexcuk 29.01.2011 в 11:46
|
![]() ![]() |
|
![]() ![]() |
|
Alex Lexcuk, он выкидывает эту ошибку только по поводу. но доку прочитать конечно же лень. так бывает.
|
![]() ![]() |
|
FP должнен выкидывать это ошибку по поводу, а если просто заменить XMLSocket на Socket, и появляется эта ошибка, то это глюк флешплеера, если ондолжен спрашивать у сервера
а он не спрашивает, а тупо выкидывает без причин секуритиэроры, то что с этим можно поделать. В общем с XMLSocket работает, кодирует в базе64 и секурити эроров нет, так пусть так и остается, а с Socket выкидывает секуритиЭрор. |
|
Обновил(-а) Alex Lexcuk 29.01.2011 в 20:40
|
![]() ![]() |
|
А если использовать FileRefference — вообще всё в шоколаде, никаких ошибок.
|
![]() ![]() |
|
блин лень писать... поставьте мой сокет сервер да протестируйте.
|
![]() ![]() |
|
мне кажется, что если у всех работает, а у Вас нет, то это никак не проблемы ФП =)
|
![]() ![]() |
|
Alex Lexcuk, человечество справляется и с более старыми версиями плэйера. в том числе и разработчики. я ещё раз намекну: проблема в вашем коде.
|
![]() ![]() |
|
![]() ![]() |
|
Код:
self.request.send(data) |
![]() ![]() |
|
@Alex Lexcuk, я таких строчек никогда не писал ... и никаких ошибок безопасности всё равно не получал ...
|
![]() ![]() |
|
Security.loadPolicyFile - нужен если кроссдоменник отдаётся не с 843 порта.
|
![]() ![]() |
|
Я последнее иногда использую чтобы заранее загрузить кроссдомейник ещё.
Не помню зачем, но когда-то надо было. |
Последние записи от Alex Lexcuk
- Obfuscater AS3 (23.04.2013)
- Python сервер для локальных файлов (28.01.2011)
- 3D анимация персоонажа (06.03.2010)
- Костяная анимация. (23.01.2010)
- понял зачем нужен drawTriangles (20.12.2009)