Показать сообщение отдельно
Старый 28.06.2013, 13:50
ziga_v вне форума Посмотреть профиль Отправить личное сообщение для ziga_v Найти все сообщения от ziga_v
  № 5  
Ответить с цитированием
ziga_v

Регистрация: Jun 2013
Сообщений: 3
Файлы почему то битые на сервер попадают, может я делаю что то не так?

Код AS3:
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.net.FileReference;
import flash.net.FileFilter;
import flash.utils.ByteArray;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.display.MovieClip;
import fl.controls.ProgressBarMode;
import flash.display.Bitmap;
import flash.display.BitmapData;
import avmplus.INCLUDE_ACCESSORS;
 
var imageTypes:FileFilter = new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)","*.jpg; *.jpeg; *.gif; *.png");
var fileRefList:FileReference = new FileReference();
var loader:Loader;
var fileName:String,
    request:URLRequest,
    urlLoader: URLLoader,
	bitmapData:BitmapData;
 
function opens(event:MouseEvent):void
{
	fileRefList.addEventListener(Event.SELECT, selectHandler);
	fileRefList.addEventListener(Event.COMPLETE,onComplete);
 
	urlLoader = new URLLoader();
	urlLoader.addEventListener(Event.COMPLETE,completeHandlerUrlLoader);
 
	fileRefList.browse([imageTypes]);
}
 
function convertToSmallBitmap(bit:Bitmap):BitmapData {
	var w:Number = 800;
    var h:Number = 600;
    //var sourceBitmapData:BitmapData = new MyBitmapData();
 
    var sx:Number = w / bit.width;
    var sy:Number = h / bit.height;
    var bitmap:Bitmap = new Bitmap( new BitmapData( w, h ) );
        bitmap.bitmapData.draw( bit.bitmapData, new Matrix( sx, 0, 0, sy, 0, 0 ) );
 
	return bitmap.bitmapData;
}
 
 
function onComplete1(event:Event):void
{
	var smallBitmap:BitmapData = convertToSmallBitmap(loader.content as Bitmap);
 
    fileName = String(new Date().getTime());
	request = new URLRequest(
	"http://localhost/save-file.php?name="+fileName+"&d="+new Date().getTime());
 
	request.data = smallBitmap.getPixels(smallBitmap.rect);
	//request.data = fileRefList.data;
	request.method = URLRequestMethod.POST;
	request.contentType = 'application/octet-stream';
	urlLoader.load(request);
}
 
function onComplete(event:Event):void
{
	loader = new Loader();
	loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete1);
	loader.loadBytes(fileRefList.data);	
}
 
function selectHandler(event:Event):void
{
	try
	{
		fileRefList.load();
	}
	catch (e:Error)
	{
	}
}
 
function completeHandlerUrlLoader(event:Event):void
{
	ExternalInterface.call("myFunction", fileName);
}
 
select_btn.addEventListener(MouseEvent.CLICK, opens);
На сервере принимаю так:

PHP код:
    $fileData $GLOBALS[HTTP_RAW_POST_DATA];
    
$fileName 'uploads/'.$_GET['name'] . '.jpg';
    
$fp fopen($fileName"w");
    
fwrite($fp,$fileData);
    
fclose($fp);
   
    echo 
"file write - OK ".$fileName
Добавлено через 56 минут
Всем спасибо, получилось!

вместо
Код AS3:
request.data = smallBitmap.getPixels(smallBitmap.rect);
поменял на
Код AS3:
request.data = jpgEncoder.encode(smallBitmap);