2017-02-01 12 views
1

可能な限りクロスプラットフォームとしてスクリプトを作成しようとしています。私はCameraUIを使ってファイルを取り出し、Firebaseにアップロードしています。問題は、ファイル拡張子ではなく、ファイル拡張子ではなくbytearrayを得ることができるということです。多数のガイドによると、iOSはmediaPromise.fileを取得してそのタイプを取得させません。だから私は私が知っているこのbytearrayからmime/typeを取得する方法の問題が残っています。私が知っているのは、MediaPromise.typeの画像かビデオです。MediaPromiseからmime/typeを入手してください

メタデータなどが役に立ちます。

this guideはセキュリティエラーになります。ドメインを持つもの私はAndroidとiOSにいるので、Security.allowDomain( "*")は実行できません。私はこのガイドに従って自分のバージョンを作った。

私が検索したところ、this guideが見つかりました。しかし、それはbytearrayを取り出すだけです。

彼はbytearrayまたは何かの最初の64Kからデータを抽出し、彼のアプリでそれを表示する何かを作った別の記事を書いています。彼はもはや上がっていないので、彼のガイドと一緒に行くことはできません。

コードには、いくつかのUI管理の追加を除いてスクリプトにあるコードがあります。私はこれをどうやって解決しますか?最初のバイトセットに常にあるメタデータがありますか?

mediapromiseが読み込まれた後、あなたはMIMEタイプを取得することができます。..

答えて

0

を私もthis nice ANEを使用してみましたが、私はエラーを取得:

cameraUI = new CameraUI(); 
if (CameraUI.isSupported) 
{ 
    cameraUI.addEventListener(MediaEvent.COMPLETE, onCameraUIComplete); 
    cameraUI.addEventListener(Event.CANCEL, onCameraUICanceled); 
    cameraUI.addEventListener(ErrorEvent.ERROR, onCameraError); 
    cameraUI.launch(MediaType.IMAGE); 
} 

private function onCameraUIComplete(e:MediaEvent):void 
{    
    var mediaPromise:MediaPromise = e.data; 

    if (mediaPromise) 
    {    
     myLoader = new Loader(); 
     myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onMediaPromiseLoaded); 
     myLoader.addEventListener(IOErrorEvent.IO_ERROR, onMediaPromiseLoadError); 
     myLoader.loadFilePromise(mediaPromise); 
    } 
} 

private function onMediaPromiseLoaded(e:Event):void 
{ 
    var myLoaderInfo:LoaderInfo = e.target as LoaderInfo;  

    var myByteArray:ByteArray = myLoaderInfo.bytes; 
    var mimeType:String = myLoaderInfo.contentType; 
} 

もう一つの方法は、MIMEタイプを決定することである「手動」 mediaPromise.file.extensionのファイル拡張子に基づいて

+0

これは画像を使用している場合にのみ機能します。ローダーはビデオメディアの約束事で働かない。 – quantomworks

+0

ビデオをロードしようとしたことはありませんが、要求されたメディアタイプとしてMediaType.VIDEOを指定することで同じように動作しませんか?あなたはonCameraUICompleteのmediaPromise.file.extensionをチェックすることができます – Philarmon

関連する問題