ファイル選択は参照ボタンを使わなければ正しく動作しない
よくできてます…。Flashからファイルのアップロードをやる最も簡単な方法を考えて、FlashからはJavaScriptを呼ぶだけにしよう!ということで、JavaScriptでちょいちょいと書いてみましたが、当然駄目でした。
#JavaScript部 <script language="JavaScript"> <!-- function selectFile() { document.FlashFileUploadForm.file.click(); } function submitForm() { document.FlashFileUploadForm.submit(); } //--> </script> #HTML部(Struts) <html:form action="FlashFileUploadAction.do" enctype="multipart/form-data"> <html:file property="file" /> </html:form> #ActionScript部 #ファイル選択ボタン on(click) { getURL("javascript:selectFile()"); } #アップロードボタン on(click) { getURL("javascript:submitForm()"); }
結果は、”アクセスが拒否されました”となり、フォームをsubmitできません。一見Flashのボタンを押すとちゃんとファイル選択ダイアログが出て、フォームにパスが設定されるのですが、実際に送信しようとするとエラーになります。画面上にある”参照..."ボタンを押す事は必須のようです。実際に書いたHTMLはさらにタチが悪く(笑)<div style="display:none">で<html:file>タグが囲まれていました。見た目じゃファイル選択のテキストエリアが見えないのに、ちゃんとファイルの選択ダイアログは出るし、送信もできちゃう。そんなのを求めてみたんですけどね、無駄でしたっ!FlexとColdFusionを使えばファイルのアップロードもできるようですが、ColdFusionそんなに無いですから!!