Использовать события указателя: нет
Свойство CSS указателя-события устанавливает, при каких обстоятельствах (если они есть) конкретный графический элемент может стать целью событий указателя.
blockquote>.button2 { pointer-events: none; }
Разветвленный пример: https://stackblitz.com/edit/angular-custom-button-ahemot
Это мне очень помогло: http: // kitchen .braitsch.io / upload-bitmapdata-snapshot-to-server-in-as3 /
Вам необходимо изменить URLRequestWrapper для вставки имен полей и имен файлов, где это необходимо. Вот что я сделал:
bytes = 'Content-Disposition: form-data; name="' + $fieldName + '"; filename="';
Он максимально форматирует заголовки, чтобы сервер мог понимать это как загрузку файла.
Кстати, если у вас есть BitmapData, вам может понадобиться кодировать его в JPEG или PNG. первый.
С уважением, Артем
Во всяком случае, я действительно не понимаю проблему вопроса: Если вопрос заключается в том, как отправить имя файла и расширение (тип изображения) из флэш-памяти вместе с byteArray данных изображения, вам следует использовать объект URLVariables.
Этот объект также может отправлять строку запроса в виде байта вместо текст.
var request:URLRequest = new URLRequest();
request.url = "your_server_page_for_example.php";
request.method = URLRequestMethod.POST;
var variables:URLVariables = new URLVariables();
variables.name = "imgName";
variables.type = ".jpg";
variables.image = myByteArray;
request.data = variables;
You can send your filename data and any other data you want along with the URLRequest:
var params:URLVariables = new URLVariables();
params.id = ride.id;
params.filename = ride.map_image;
params.path = 'maps/';
var req:URLRequest = new URLRequest( ModelLocator.SERVER_URL + "/php/uploadpic.php");
req.method = URLRequestMethod.GET;
req.data = params;
fileRef.upload(req);
on the server side in php you access the extra variables as: $_REQUEST['path'] and $_REQUEST['filename'] etc
I haven't used the imageshack API, but you may want to try using adobe's JPGEncoder class - here's a quick example that passes a username and the JPG's byte array, it's really quite simple.
private function savePicToServer(bmpData:BitmapData):void
{
var jpgEncoder:JPGEncoder = new JPGEncoder(85);
var jpgStream:ByteArray = jpgEncoder.encode(bmpData);
var loader:URLLoader = new URLLoader();
configureListeners(loader);
var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
var request:URLRequest = new URLRequest(ModelLocator.BASE_URL + ModelLocator.UPLOAD_URL + "?user=" + ModelLocator.getInstance().username);
request.requestHeaders.push(header);
request.method = URLRequestMethod.POST;
request.data = jpgStream;
loader.load(request);
}
Note that the variables are passed as part of the query string. You can't use URLVariables, as several people have suggested, as the URLVariables would be stored in the request's data property, which we are already using to pass the byteArray.
Я не использовал API-интерфейс imageshack, но раньше отправлял BitmapData на сервер.
Вы необходимо создать URLRequest и добавить bitmapData в качестве byteArray, поэтому код, я думаю, будет выглядеть примерно так:
var header:URLRequestHeader = new URLRequestHeader ("Content-type", "application/octet-stream");//this says the data your sending is binary, not text
var uploadRequest:URLRequest = new URLRequest('yourImageShackUploadURL.php');
uploadRequest.requestHeaders.push (header);
uploadRequest.method = URLRequestMethod.POST;
uploadRequest.data = yourBitmapData.getPixels(yourBitmapData.rect);
sendToURL( uploadRequest);
Вам может потребоваться следующий импорт:
import flash.net.* // for sendToURL and other net stuff
import flash.geom.Rectangle;
import flash.display.BitmapData;
Вы получаете ByteArray из вашего bitmapData с использованием BitmapData's getPixels () метод. Ему нужен экземпляр Rectangle, чтобы узнать положение и размеры, которые вам нужны, но если вам нужен ByteArray для всех BitmapData, а не только для вашей части, вы можете использовать свойство rect BitmapData. Вы создаете заголовок с помощью класса URLRequestHeader и помещаете его в requestHeaders вашего URLRequest. Вы указываете, что ваш метод является post, используя свойство method.
Это должно быть так. Я не знаю никаких других специфичных для API вещей, поэтому надеюсь, что это поможет.
Удачи!
Вы можете использовать URLVariables, просто base64-encode bytearray, поэтому это не двоичные данные:
import mx.utils.Base64Encoder;
// ...
var urlRequest:URLRequest = new URLRequest("/whatever");
urlRequest.method = URLRequestMethod.POST;
var urlVariables:URLVariables = new URLVariables();
var base64Encoder:Base64Encoder = new Base64Encoder();
base64Encoder.encodeBytes(byteArray);
urlVariables.something_base64 = base64Encoder.toString();
urlRequest.data = urlVariables;
navigateToURL(urlRequest, "_blank");
затем на стороне сервера base64decode '' поле post, то есть:
php:
base64_decode($_POST['something_base64'])
rails :
require 'base64';
# ...
Base64.decode64(params[:something_base64])