我想尽可能地让我的脚本成为跨平台。我正在使用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,但是我收到了错误..
答案 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中的文件扩展名