2011-12-30 2 views
2

외부 인터페이스에서 호출 할 여러 파일 업로드 플래시 응용 프로그램을 만들려고하지만 작동하지 않습니다.AS3/JavaScript ExternalInterface 및 파일 업로드

AS3 :

var fileRef:FileReferenceList; 

ExternalInterface.addCallback('selectFiles', showDialog); 

function showDialog() 
{ 
    fileRef = new FileReferenceList(); 
    fileRef.browse(); 

// ExternalInterface.call('ASalert'); 
} 

자바 스크립트/jQuery를 :

$(function(){ 
    var uploader = this['_uploader']; 

    $('#selectFiles').click(function(){ 
    uploader.selectFiles(); 
    }) 
}) 

function ASalert() { 
    alert('Fired'); 
} 

내가 스크립트를 실행하고 fileRef 부분을 주석하고 경고 전화의 주석, 그것이 내가 언급도 할 때 경고를 표시합니다 ExternalInterface 호출에서 fileRef 부분 만 남겨두고 파일 업로드 대화 상자를 표시합니다. 의도 한대로 내가 그것을 실행

, 나는 다음과 같은 오류가 발생합니다 :

Error calling method on NPObject 

는 함께 사용에 구글은 업로드 파일이나 AS3에서의 ExternalInterface를 사용하거나 튜토리얼의 끝없는 목록을 휘두른 검색,하지만 아무것도 !

아이디어가 있으십니까?

+0

'FileReferenceList'는 아마도'FileReferenceList'이어야합니다. 아마도'ExternalInterface.addCallback()'은 아마도 익명 함수가 아닌 함수에 대한 참조 일 것입니다. – Taurayi

+0

나는 이것이 실제로 휴대 전화로 타이핑하고 타이핑하고 그것을 쓰는 빠른 방법이라는 것을 알고있다 ... 내가 말했듯이, 각각의 개별적인 부분은 잘 작동하고 잘 작동하지 않는다. –

+0

정확히 무엇을하려는 것입니까? – Taurayi

답변

3

ExternalInterface를의 가용성을 확인하는 조건에 ExternalInterface.addCallback('selectFiles', showDialog); 문을 포장하십시오 :,이에 문제로 실행하는 거라고 그 문제를 해결하는 경우에도 또한

if(ExternalInterface.available) 
{ 
    ExternalInterface.addCallback('selectFiles', showDialog); 

} 

:

function showDialog() 
{ 
    fileRef = new FileReferenceList(); 
    fileRef.browse(); 

// ExternalInterface.call('ASalert'); 
} 

마우스 클릭이나 키 누르기와 같은 사용자 상호 작용없이 FileReferenceList.browse()을 호출 할 수 없습니다. 이 문제를 해결할 방법이 없습니다.

+0

명확히 해 주셔서 감사합니다! 사이트 모양을 너무 크게 변경하지 않은 다중 파일 업로드에 대해 HTML5 대체본을 만들려고했지만 너무 어려울 것 같습니다. HTML5가 더 잘 지원 될 때까지 플래시 업로드를 사용하겠습니다. 당신은 또한 내 음악 플레이어로 나를 도왔습니다. 내가 그렇게하고있는 이유가 이상하게도 HTML5 폴백으로 그것을 통합하는 것이 었습니다! –

+0

''을 왜 사용하지 않으시겠습니까?제대로 이해한다면 HTML5는 필요하지 않습니다. 보통 HTML 만 있으면됩니다. 그렇게하면 플래시로 전환 할 필요가 없습니다. 또한 플래시가 HTML5의 대체물이 될 것이라는 것이 더 합리적이라고 생각합니다. – Taurayi

+0

아, 여러 파일 업로드를 원하지 않으니까요. 그러므로 'FileRereferenceList'. – Taurayi

2

상호 작용 이벤트에서 browse() (으)로만 호출 할 수 있다는 점에서 여기서 문제가되지 않습니까?

어도비는 말한다 :

In Flash Player 10 and Flash Player 9 Update 5, you can only call this method successfully in response to a user event (for example, in an event handler for a mouse click or keypress event). Otherwise, calling this method results in Flash Player throwing an Error exception.

플래시 디버그 플레이어를 설치 시도하고 당신이 그 예외를 얻을, 또는 그것을 잡기 및 오류 메시지를 표시하려고하는 경우를 참조하십시오.

+0

예, 타우 레이 (Taurayi)는 이미 정답으로 선택한 것을 그의 대답에서 이미 지적했습니다! –

+0

아, 미안, 그 부분을 놓쳤다 :) –