- - PR -
struts開発における、ActiveXからのファイル添付について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-10-31 19:07
「ブラウザから呼び出される部分」というのは
ActiveXを使用しないパターンの作りということでしょうか? そういうことでしたら、別々に作っております。 「ActiveXを使用する場合は、POSTでActionクラスが直接呼ばれ、」 というのは、ActiveXを使用しないパターンは、 先ほども記述したように、 jsp上に、<html:file />タグをかいて、ブラウザーからファイルを追加し、 javascriptでsubmitしています。 しかし、ActiveXを使用するパターンは、 <OBJECT〜>タグ内の、<PARAM〜>で画面からaction先をパラメータとしておき、 Actionクラスを呼んでほしいタイミングで ActiveXのある関数をよんでActiveXがActionクラスを呼び出すのです。 Formにデータは入っていないため、Formからデータはとれません。 ActiveXがリクエストにPOSTしたマルチパートデータは どのような方法でとれるのでしょう? | ||||
|
投稿日時: 2005-10-31 19:13
まず、ActiveXオブジェクトから送られるHTTPリクエストがブラウザから送られるものと
同じであれば、わざわざ別々に作る必要はありません。なぜ別々にしているのか理由が わからないのですが、
それはどのようにActiveXからリクエストが送られているかわからないと回答のしようが ありません。わざわざこのような作りにしているのであれば、そのように設計した人が いるわけですよね? その設計者に聞くのが先決ではないですか? | ||||
|
投稿日時: 2005-10-31 19:19
設計者はマルチパートデータを解析するしかないのかな・・・。
といった感じです。 ですので、何かいい方法はないものかと調査していたのです。 ActiveX側のデータがわからないと駄目ですよね・・・。 ご丁寧に教えていただき、本当にありがとうございました。 | ||||
|
投稿日時: 2006-05-12 16:01
実は同じ問題にはまったものです。
結論は、strutsのアクションでうけとるActionFormのgetter/setterの名前の問題でした HTML側では、送信時は <FORM action="/hogehoge.do" method="post" enctype="multipart/form-data"> ファイル:<INPUT type="file" name="unkofile"> <input type="submit" value="送信"> </FORM> とかきます。 これに対応するstrutsのActionFormは public class MyStrutsForm extends ActionForm { private FormFile formfile; public void setUnkofile( FormFile val ) { formfile = val; } public FormFile getUnkofile() { return formfile; } } となります。 よって、activeX側で、どんな風にリクエストをなげているかがわかれば、 strutsでも問題なく、ファイルは受信できます。 なお、自分の場合は、 APsrver:weblogic workshop(strutsを拡張したものですが、ActionFormにすれば同じです) ActiveX:BFup でした 具体的には、 <%@ page language="java" contentType="text/html;charset=UTF-8"%> <%@taglib prefix="html" uri="http://jakarta.apache.org/struts/tags-html"%> <html> <body bgcolor="#335533" text="#eeffee" LINK="#ee9999"> <br> <OBJECT codebase="BFup.CAB" ID="BFUP" HEIGHT=500 WIDTH=700 CLASSID="CLSID:287C8635-2B41-11D2-8769-00000E4E0AD6"> <PARAM NAME="FilePath" VALUE="c:/"> <PARAM NAME="URL" VALUE="http://hoge.do"> <PARAM NAME="auth" VALUE="hoge:hoge"> <PARAM NAME="transparent" VALUE="1"> </OBJECT> </BODY> </html> public class MyStrutsForm extends FormData { private FormFile formfile; public void setXfile001( FormFile val ) { formfile = val; } public FormFile getXfile001() { return formfile; } } |