현재, 웹에서 멀티 업로드를 구현하기 위해서 SWFUpload 를 사용하고 있습니다.
그런데, 한가지 문제가 있네요.

윈도우나, 맥에서는 잘 동작 합니다만, 리눅스의 파이어 폭스 에서는 잘 동작 하지 않습니다.
증상은 다음과 같습니다.

  • 처음 업로드 페이지를 로드한후 업로드를 하면 여러개의 파일중 첫번째 파일이 올라가지 않는다.
  • 해당 페이지를 리로딩 한후 하면 첫번째 파일부터 잘 올라간다.

문제를 알아내기 위해서 난생 처음으로 플래시 액션스크립트 분석도 했네요. -_-;;;
제 나름대로 결론은... 리눅스의 플래시 플레이어의 버그 라고 생각됩니다만.. ㅜ.ㅜ

SWFUpload 의 동작 방식은 다음과 같습니다.

  1. File 선택 다이얼로그 박스에서 여러개의 파일을 선택하고 완료를 하는 순간 플래시에서 이벤트를 받아서 FileReferenceList 객체로 받아옵니다.
  2. 이 객체에서 FileReference 객체를 하나씩 루프를 돌면서 빼내서 FileQueue라는 Array객체에 하나씩 집어 넣습니다.
  3. upload 버튼을 사용자가 누르면 업로드를 시작하는데, FileQueue 배열에서 하나씩FileReference 객체를 빼내서, FileReference.upload(url); 이라는 메소드를 통해서 업로드를 시작합니다.
  4. 업로드를 하는중간에 해당 파일 객체에 등록한 리스너를 통해서 완료 이벤트와, 진행상태, 등의 이벤트를 받아서 적절하게 처리해 줍니다.

대강 스토리는 위와 같은데요, 문제는 리눅스 파이어폭스에서 처음 로딩됐을때, 첫번째 FileReference 객체의 upload 메소드가 동작하지 않는다는 것입니다. ethereal 로 패킷을 잡아봐도 아무것도 나가는것이 없습니다. 황당합니다. -_-;;

그러므로 결론은 리눅스 Flash Player의 문제라고 결론 지었습니다. 그런데 이거 꼭 해결해야 하는 문젠데요. 어쩔까요 ㅜ.ㅜ

혹시 이런 비슷한 문제를 겪어보신분 있으시면 댓글좀 달아주세요. ㅜ.ㅜ

== 2007년 04월 03일 11시 19분 추가 합니다. ==
다음의 동영상 올리기도 플래시로 되어 있는데, 이건 잘 올라가네요. -_-;
그럼 플래시 플레이어 문제는 아닌가? ㅜ.ㅜ

Posted by 하루하루