Флэш-загрузка на s3 с использованием гнезда as3httpclient - PullRequest
1 голос
/ 21 декабря 2011

Я пытаюсь загрузить jpeg в Amazon S3 из флэш-памяти с помощью сокета, я хочу избежать URLLoader, а FileRefrence загружает другие проблемы политики безопасности, которые требуют взаимодействия с пользователем.Я хочу иметь возможность изменять размеры и кодировать изображение в ByteArray и загружать изображение на основе вызова внешнего интерфейса.Я видел этот пример.

https://github.com/gabriel/as3httpclient/blob/master/test/s3/S3PostTest.as

Я использовал следующий crossdomain.xml

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
<!-- Policy file for xmlsocket://socks.example.com -->
<cross-domain-policy> 
     <allow-access-from domain="*" to-ports="*" secure="false"/>
</cross-domain-policy>

, и я получил превербальную

Ошибка: Запросдля ресурса в xmlsocket: //mybucket.s3.amazonaws.com: 80 по запросу от http://mybucket.s3.amazonaws.com/swf/myswf.swf отказано из-за отсутствия разрешений для файла политики.

Я знаю, что используется реализация сокета, но яне знаю, что мне не хватает в этот момент, S3 не позволяет вам искать файл политики из реализации флэш-сокета через порт 80 или 443?Однако это не объясняет, почему этот пример as3httpclient находится там, у кого-нибудь есть идеи?

Ответы [ 3 ]

1 голос
/ 22 декабря 2011

Я думаю, что ответ таков: код as3httpclient для Amazon S3 предназначен для Adobe Air, а не для Flash / Flex.

Проверка файла политики сокетов через http не работает для меня, потому что flash все еще требует проверки его через сокет на порту 80, который не удается (даже если он принят через http).

0 голосов
/ 14 августа 2012

Это не работает, потому что в дополнение к файлу кросс-доменной политики сервер (в вашем случае S3) должен позволять вам успешно подключаться к нему через сокет через Файловый сервер политики сокетов . И S3, очевидно, не работает.

Это требуется только веб-приложениям (Flash / Flex), настольные приложения (AIR и т. Д.) Могут проходить без одобрения файлового сервера Socket Policy.

0 голосов
/ 21 декабря 2011

Если вы хотите использовать сокеты (as3httpclient использует сокет для обработки HTTP-транзакций), вам нужен файл междоменного домена .

Он должен обслуживаться тем же сервером (здесь http://mybucket.s3.amazonaws.com) как точка назначения вашего сокета.

Есть 2 способа сделать это: обслужить его через порт 843 (транзакция XMLSocket) или предоставить доступ через HTTP, например: http://mybucket.s3.amazonaws.com/crossdomain.xml и вызвать Security.loadPolicyFile("http://mybucket.s3.amazonaws.com/crossdomain.xml"); в вашем приложении перед любой транзакцией HTTP.

Ссылки:

...