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, время: 09:44. |