Flash -> post файлов. Аналогия php-шному fsockopen ???
Нужен метод отправки файла посредством flash.
URLRequest дает решение, но дело в том, что для отправки этим методом нужен уже готовый файл. В моем случае файл большой и хотелось бы его отправлять еще в момент его создания, т.е. на лету. В php с этим бы не было проблем, а вот flash - :cray: |
Так а что у вас на руках есть? Кусок файла? Поток?
Почему не дождаться окончания формирования файла? И сокеты в флеше есть. http://help.adobe.com/ru_RU/ActionSc...rogramming.pdf оф. ман по ActionScript, про сокеты там есть. |
Спасибо.
Пороюсь по сокетам. А файл берется с локалки через реф, и шифруется перед отправкой. Файлы бывают до гига, соответственно, дождаться пока такой зашифруется, а потом отправится, почти нереально. =) Надо полюбому шифровать-отправлять шматками. |
Если у вас размер виден - режьте кусками по мегабайту и отправляйте поштучно, на сервере сливайте в один. Или сокеты.
|
Цитата:
Задача нагрузить клиентский комп, но сервер пожалеть. =) Вот что нашол по сокетам. http://help.adobe.com/ru_RU/FlashPla...xamplesSummary там довольно скромный пример работы, но так как познания в этом очень слабые, то маловато будет. Если не смогу разрулить сам, то может кто поможет? |
К сожалению, найти в сети живой пример отправки файла через сокеты не получилось =(
|
Цитата:
package com.net { /* * author: devote */ import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLVariables; import flash.net.URLRequestMethod; import flash.net.URLRequestHeader; import flash.utils.ByteArray; import flash.events.ProgressEvent; public class MultipartSender extends URLLoader { private var multiPartFields: ByteArray; private var _params: * ; private var _variables: URLVariables; public function MultipartSender(): void { super(); multiPartFields = new ByteArray(); _variables = new URLVariables(); } public function addMultipartField( sName: String, sValue: * ): void { _variables[ sName ] = sValue; } public function addMultipartFile( sName: String, sFileName: String, data: ByteArray ): void { _variables[ sName + "[filename]" ] = sFileName; _variables[ sName + "[filesize]" ] = data.length; multiPartFields.writeBytes( data ); } public function Send( url: String ): Boolean { var AcceptHeader: URLRequestHeader = new URLRequestHeader( "Accept", "*/*" ); var request: URLRequest = new URLRequest( url ); request.requestHeaders.push( AcceptHeader ); request.method = URLRequestMethod.POST; //trace(_variables.toString()); if ( multiPartFields.length > 0 ) { request.url = url + "?" + _variables.toString(); request.data = multiPartFields; } else { request.data = _variables; } //addEventListener(ProgressEvent.PROGRESS, function(e: ProgressEvent): void { // e. //}); var result: Boolean = false; try { this.load( request ); result = true; } catch( error: Error ) { trace( "Unable to load requested document." ); } multiPartFields.clear(); _variables = new URLVariables(); return result; } public function set params( value: * ): void { _params = value; } public function get params(): * { return _params; } } } Использовать примерно так: ms = new MultipartSender(); ms.addEventListener(Event.COMPLETE, function(e: Event): void { trace("complete"); trace(e.currentTarget.data.toString()); }); ms.addEventListener(ProgressEvent.PROGRESS, function(e: ProgressEvent): void { trace(e.bytesLoaded, e.bytesTotal); }); ms.addEventListener(IOErrorEvent.NETWORK_ERROR, function(e: IOErrorEvent): void { trace(e.currentTarget.data); trace("error"); }); ms.addMultipartFile( "testnamefield", "file.jpg", Buffer ); ms.addMultipartField( "test", "val" ); ms.Send("http://somesite.com/test.php"); |
Цитата:
Увы, не то. Здесь задача сложнее: брать куски, зашифровывать, и отравлять. Пока что реализовал как Rootpassword сказал, т.е. кусками, но это не то и замедляет, т.к. надо проверять, отправился ли очередной кусок, потому что если не проверять, то куски путаются. |
Если кто может сделать на флещь аплоад динамического файла на сервер (т.е. не зная заранее длины файла, потому что тот формируется программно), то сообщите. Может договоримся. =)
|
Часовой пояс GMT +3, время: 03:24. |