kiloT
04.07.2011, 18:47
Здравствуйте. Пытаюсь отправить фотографию в альбом Вконтакте. Собственно в переменной url лежит адрес сервера для загрузки. В последней строчке вызываю метод load. Но проблема в том, что функция ничего не отправляет и не выводит ошибок. В чем проблема?
var ba:ByteArray = new ByteArray();
var encoder:PNGEncoder = new PNGEncoder();
var bd:BitmapData = new BitmapData(CityFarm.instance.width, CityFarm.instance.height);
var mul:MultipartURLLoader = new MultipartURLLoader();
bd.draw(world.layer);
ba = encoder.encode(bd);
ba = MultipartData.addFile(ba, "image1");
var request:URLRequest = new URLRequest();
request.url = url;
request.requestHeaders.push(new URLRequestHeader("Content-type", "multipart/form-data; boundary=" + MultipartData.BOUNDARY));
request.method = URLRequestMethod.POST;
request.data = ba;
var imageLoader:URLLoader = new URLLoader();
imageLoader.dataFormat = URLLoaderDataFormat.BINARY;
imageLoader.addEventListener(Event.COMPLETE, onLoaderComplete);
imageLoader.addEventListener(IOErrorEvent.IO_ERROR, onIOErrorHandler);
imageLoader.load(request);
MultipartData
package org.flashgate.external.uploader {
import flash.utils.ByteArray;
/**
* ...
* @author rzer
*/
public class MultipartData{
public static const BOUNDARY:String = "----------cH2gL6ei4Ef1gL6GI3Ij5Ef1Ef1Ef1";
private static const CRLF:String = "\r\n";
private static const HYPHENS:String = "--";
public static function addFile(file:ByteArray, name:String = "Filedata", fileName:String = "name.jpg"):ByteArray {
var data:ByteArray = new ByteArray();
data.writeUTFBytes(HYPHENS + BOUNDARY + CRLF);
data.writeUTFBytes("Content-Disposition: form-data; name=" + name + "; filename=" + fileName + CRLF);
data.writeUTFBytes("Content-Type: application/octet-stream" + CRLF + CRLF);
data.writeBytes(file);
data.writeUTFBytes(CRLF);
var result:ByteArray = new ByteArray();
result.writeBytes(data);
result.writeUTFBytes(HYPHENS + BOUNDARY + HYPHENS);
return result;
}
}
}
var ba:ByteArray = new ByteArray();
var encoder:PNGEncoder = new PNGEncoder();
var bd:BitmapData = new BitmapData(CityFarm.instance.width, CityFarm.instance.height);
var mul:MultipartURLLoader = new MultipartURLLoader();
bd.draw(world.layer);
ba = encoder.encode(bd);
ba = MultipartData.addFile(ba, "image1");
var request:URLRequest = new URLRequest();
request.url = url;
request.requestHeaders.push(new URLRequestHeader("Content-type", "multipart/form-data; boundary=" + MultipartData.BOUNDARY));
request.method = URLRequestMethod.POST;
request.data = ba;
var imageLoader:URLLoader = new URLLoader();
imageLoader.dataFormat = URLLoaderDataFormat.BINARY;
imageLoader.addEventListener(Event.COMPLETE, onLoaderComplete);
imageLoader.addEventListener(IOErrorEvent.IO_ERROR, onIOErrorHandler);
imageLoader.load(request);
MultipartData
package org.flashgate.external.uploader {
import flash.utils.ByteArray;
/**
* ...
* @author rzer
*/
public class MultipartData{
public static const BOUNDARY:String = "----------cH2gL6ei4Ef1gL6GI3Ij5Ef1Ef1Ef1";
private static const CRLF:String = "\r\n";
private static const HYPHENS:String = "--";
public static function addFile(file:ByteArray, name:String = "Filedata", fileName:String = "name.jpg"):ByteArray {
var data:ByteArray = new ByteArray();
data.writeUTFBytes(HYPHENS + BOUNDARY + CRLF);
data.writeUTFBytes("Content-Disposition: form-data; name=" + name + "; filename=" + fileName + CRLF);
data.writeUTFBytes("Content-Type: application/octet-stream" + CRLF + CRLF);
data.writeBytes(file);
data.writeUTFBytes(CRLF);
var result:ByteArray = new ByteArray();
result.writeBytes(data);
result.writeUTFBytes(HYPHENS + BOUNDARY + HYPHENS);
return result;
}
}
}