从MediaPromise获取mime / type

时间:2017-02-01 07:14:57

标签: actionscript-3 mime-types

我想尽可能地让我的脚本成为跨平台。我正在使用CameraUI来获取文件并将其上传到Firebase。问题是我只能通过filepromise获取bytearray而不是文件扩展名。或者任何东西。根据众多指南,iOS不会让你获得mediaPromise.file来获取它的类型。所以我留下了如何从这个bytearray获取mime /类型的问题,我知道它是来自MediaPromise.type的图像或视频。

MetaData或任何其他内容都会有所帮助。

关注this guide让我遇到安全错误。有域名的东西。我在Android和iOS中,所以我不能做Security.allowDomain(“*”);我按照本指南制作了自己的版本。

我搜索并找到了this guide,这很有效。但它只获取bytearray ..

他写了另一篇文章,提出了从bytearray的第一个64K中提取数据的东西,并将其显示在他的应用程序中。他使用了一个不再上升的库,所以我不能真正选择他的导游。

除了一些UI管理添加之外,其中的代码是我脚本中的代码。我该如何解决这个问题?是否有一些元数据始终位于第一组字节中?

我甚至尝试使用this nice ANE,但是我收到了错误..

1 个答案:

答案 0 :(得分:0)

加载mediapromise后,您可以获取mime类型:

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;
}

另一种方法是确定mimetype"手动"基于mediaPromise.file.extension中的文件扩展名