1. ホーム
  2. Web プログラミング
  3. フレックス

ローカル画像のフレックスアップロードとアドバンスビュー方式

2022-01-04 17:53:55
パーソナライズされたアバターを変更するような機能を設計することがよくあります。最終的にはサーバーのファイルシステムにアップロードする必要がありますが、プログラムでは、ユーザーが選択した後に直接プレビューして、ユーザーがアップロードできるようにしたいのです。この機能には、技術的にはローカルファイルを読み込む機能が必要です。flash player10にはこれを実現するFileReferenceというクラスがあり、ファイルを読み込むためのインターフェイスはload( )関数になります。
a. この関数は、ユーザーがボタンを押したときなどのUI操作でのみ使用することができます。
b. ロードイン後のローカルファイルはASで使用できない
c. このインターフェースは非同期処理、つまりすぐに読み込まれないので、動作にはListenerを追加する必要があります。
以下は参考コードです。
コピーコード コードは以下の通りです。

<?xml version="1.0" encoding="utf-8"? >
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
creationComplete="creationCompleteHandler(event)">
<fx:Script>
<! [CDATA[
import flash.net.FileReference;
import flash.net.FileFilter;
import flash.events.IOErrorEvent;
import flash.events.Event;
private var fr:FileReference;
private var imageTypes:FileFilter;
private function creationCompleteHandler(event:Event):void {
fr = new FileReference();
imageTypes = new FileFilter("Images (*.jpg, *.jpeg, *.png, *.gif)","*.jpg; *.jpeg; *.png; *.gif;")
fr.addEventListener(Event.SELECT, selectHandler);//add a Listener when the user selects a file after opening the browsing file
}
private function browseHandler(event:Event):void {
fr.browse([imageTypes]);//open the dialog for browsing files
}
private function selectHandler(event:Event):void {
fr.addEventListener(Event.COMPLETE, onLoadComplete);//add a listener for when the file load is complete
fr.load(); //Load the user selected file
}
private function onLoadComplete(e:Event):void
{
imgPhoto.source = fr.data;
}
]]>
</fx:Script>
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Declarations>
<! -- put non-visible elements (e.g. services, value objects) here -->
</fx:Declarations>
<mx:Image id="imgPhoto" visible="true" autoLoad="true" width="1000" height="500"/& gt;
<mx:Button id="btnBrowse" label="Browse" click="browseHandler(event)" />
</s:Application>