Base64Encoder

by tkinjo
♥1 | Line 42 | Modified 2009-05-01 14:34:55 | MIT License
play

ActionScript3 source code

/**
 * Copyright tkinjo ( http://wonderfl.net/user/tkinjo )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/3hGC
 */

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="465" height="465">
	
	<mx:Script>
		<![CDATA[
			
			import flash.events.ProgressEvent;
			import flash.net.FileReference;
			import mx.events.FlexEvent;
			import mx.utils.Base64Encoder;
			
			private var ファイルリファレンス:FileReference;
			
			/**
			 * ファイルを Base64 エンコードストリングにエンコードします。
			 * 
			 * 
			 * wonderfl に任意の画像を埋め込むときなどにどうぞ。
			 * 
			 * 
			 * 
			 * Base64 エンコードストリングの使用例
			 * 
			 * forked from: 2009-3-14 wonderfl に任意の画像を埋め込む
			 * http://wonderfl.kayac.com/code/d13a85899a700da06cfcce52aa87fbefd5708479
			 * 
			 * 
			 * 
			 * 読みやすいかと思って変数や関数名を日本語にしてみましたが…思ったよりコードが書きにくくなりますね…。
			 */
			
			/**
			 * 
			 */
			private function 開くボタンを押した( イベント:FlexEvent ):void {
				
				ファイルリファレンス = new FileReference();
				ファイルリファレンス.addEventListener( Event.SELECT, 選択した );
				ファイルリファレンス.browse();
			}
			
			/**
			 * 
			 */
			private function 選択した( イベント:Event ):void {
				
				/**
				 * var ファイルリファレンス:FileReference = イベント.target as FileReference;
				 * 	と書いてはいけない。
				 * FileReference はローカル変数で使えないらしく、読み込みに失敗することも。
				 */
				//var ファイルリファレンス:FileReference = イベント.target as FileReference;
				
				ファイルリファレンス.addEventListener( ProgressEvent.PROGRESS, ダウンロード処理中 );
				ファイルリファレンス.addEventListener( Event.COMPLETE, ダウンロードが完了 );
				ファイルリファレンス.load();
			}
			
			/**
			 * 
			 */
			private function ダウンロード処理中( イベント:ProgressEvent ):void {
				
				//メーセージテキスト.text = "読み込み中 : " + イベント.bytesLoaded / イベント.bytesTotal * 100;
				メーセージテキスト.text = "読み込み中 : " + イベント.bytesLoaded + "/" + イベント.bytesTotal;
			}
			
			/**
			 * 
			 */
			private function ダウンロードが完了( イベント:Event ):void {
				
				メーセージテキスト.text = "変換中";
				
				var base64エンコーダー:Base64Encoder = new Base64Encoder();
				base64エンコーダー.insertNewLines = false;
				base64エンコーダー.encodeBytes( ファイルリファレンス.data );
				
				メーセージテキスト.text = "変換完了";
				
				結果.text = base64エンコーダー.toString();
			}
			
			/**
			 * 
			 */
			private function クリップボードへコピーボタンを押した( イベント:FlexEvent ):void {
				
				System.setClipboard( 結果.text );
			}
			
		]]>
	</mx:Script>
	
	<mx:Text id="メーセージテキスト" text="”開く”ボタンから base64 形式に変換したいファイルを選択してください。" />
	<mx:HBox>
		<mx:Button id="開くボタン" label="開く" buttonDown="開くボタンを押した( event )" />
		<mx:Button id="クリップボードへコピーボタン" label="クリップボードへコピー" buttonDown="クリップボードへコピーボタンを押した( event )" />
	</mx:HBox>
	<mx:TextArea id="結果" width="100%" height="100%" />
</mx:Application>