fileReferenceを使用していますが、MAC上のSafariでの実行に問題があります...
編集: 以下の例は、MAC上のSafariでも機能しません...
PCのワークフローは次のように実行されます。
- ファイル参照を作成する
- に添付
addEventListener
しEvent.SELECT
てEvent.COMPLETE
browse()
メソッド を呼び出す
PCではEvent.SELECT
、ファイルが選択されたときに発生します。
Event.COMPLETE
ファイルデータがフラッシュできるようになると発生します。500 MBのファイルを選択すると、起動されるまでに数秒かかりますEvent.COMPLETE
。起動される前にファイルデータプロパティ(データストリームの読み取りなど)にアクセスしようとすると、Event.COMPLETE
null参照エラーが発生します...
ここまでは順調ですね...
ただし、MAC(具体的にはSafari、他のブラウザではテストされていません)では、Event.COMPLETE
は起動されません。
Event.COMPLETE
アップロードが完了すると起動されるというAdobeのドキュメントを確認しました。では、fileReference
がファイルを解析したのに、uploadメソッドがまだ呼び出されていないのに、なぜWindowsで起動されるのでしょうか...
誰か助けてもらえますか?
これが私が取り組んでいるコードの抜粋です:
public function browseFile(target:Object):void
{
var imagesFilter:FileFilter = new FileFilter("Allowed files", "*.jpg;*.bmp;*.flv;");
fileReference.browse([imagesFilter]);
fileReference.addEventListener(Event.SELECT, fileSelect);
fileReference.addEventListener(Event.COMPLETE, fileSelectComplete);
}
private function fileSelect(event:Event):void
{
// update label - IMPORTANT for large files as there's a delay while flash parses file, before control is handed back to this script...
setStatusLabel("...loading file");
var fileReference:FileReference = event.target as FileReference;
fileReference.addEventListener(Event.COMPLETE, fileSelectComplete);
// load the file into the fileReference object
fileReference.load();
}
// Called when upload file has been processed by flash (a few secs for large files, or fileRef.data is null...)
private function fileSelectComplete(event:Event):void
{
var fileReference:FileReference=event.target as FileReference;
trace("ready to do things - but not fired on Safari on a MAC ");
}