2017-02-01 5 views
1

가능한 한 교차 플랫폼으로 스크립트를 만들려고합니다. CameraUI를 사용하여 파일을 가져 와서 Firebase에 업로드합니다. 문제는 파일 확장자가 아니라 파일 확장자를 통해서만 bytearray를 얻을 수 있다는 것입니다. 수많은 가이드에 따르면 iOS에서는 mediaPromise.file을 사용하여 유형을 얻지 못하게합니다. 그래서 저는 제가 갖고있는 bytearray에서 MIME 형식을 얻는 방법에 대한 질문을 받았습니다. MediaPromise.type의 이미지 나 비디오 중 하나입니다.MediaPromise에서 MIME/형식 가져 오기

메타 데이터 또는 기타 도움이됩니다.

다음은 this guide입니다. 보안 오류가 발생합니다. 도메인이있는 것. 나는 Android와 iOS에있어 Security.allowDomain ("*")을 할 수 없다. 이 가이드를 따라 제 자신의 버전을 만들었습니다.

검색 한 결과 this guide이 검색되었습니다. 그러나 그것은 단지 bytearray만을 가져옵니다.

그는 bytearray 또는 무언가의 첫번째 64K에서 데이터를 추출하고 그것을 그의 app에 표시 한 것을 만든 또 다른 기사를 썼습니다. 그는 성경을 더 이상 사용하지 않으므로 나는 그의 가이드와 함께 갈 수 없다.

코드에는 몇 가지 UI 관리 추가 사항 외에 제 스크립트에있는 코드가 있습니다. 어떻게 해결할 수 있을까요? 항상 첫 번째 바이트 세트에있는 메타 데이터가 있습니까?

심지어 this nice ANE를 사용하여 시도,하지만 난 오류가 ..

당신은 mediapromise가로드되면 MIME 타입 얻을 수

답변

0

:

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