我在一个DisplayObject上使用了BitmapData.draw(),该对象包含了我的AWS S3存储桶中的一个图像。当我将S3图像URL设置为Image对象的源时,图像在swf中加载正常,但当我在其上使用BitmapData.draw()时,它给了我这个错误:
安全性错误:错误#2122:安全沙箱违规:BitmapData.draw:https://www.example.com/Example.swf无法访问https://s3.amazonaws.com/example-images/example.jpg。需要策略文件,但加载此媒体时未设置checkPolicyFile标志。
AS代码:
var bmpd:BitmapData = new BitmapData(objectToDraw.width,objectToDraw.height);
bmpd.draw(objectToDraw);
我已经尝试将以下crossdomain.xml文件放入我的S3 bucket根目录中,但没有效果:
<?xml version="1.0"?><!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>
1条答案
按热度按时间7kqas0il1#
访问S3上的文件有两种方法:
[bucket name].s3.amazonaws.com/file.ext
[bucket name].s3.amazonaws.com/file.ext
个由于crossdomain.xml文件需要位于域的根文件夹中,而您无权访问
s3.amazonaws.com
的根文件夹,因此,如果使用第一种方法,则无法控制crossdomain.xml
文件如果您使用第二种方法,则可以将
crossdomain.xml
文件放在存储桶的根文件夹中,Flash Player将正确使用该文件。