- PR -

struts開発における、ActiveXからのファイル添付について

投稿者投稿内容
未記入
会議室デビュー日: 2005/10/31
投稿数: 6
投稿日時: 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したマルチパートデータは
どのような方法でとれるのでしょう?
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-10-31 19:13
まず、ActiveXオブジェクトから送られるHTTPリクエストがブラウザから送られるものと
同じであれば、わざわざ別々に作る必要はありません。なぜ別々にしているのか理由が
わからないのですが、

引用:

未記入さんの書き込み (2005-10-31 19:07) より:
ActiveXがリクエストにPOSTしたマルチパートデータは
どのような方法でとれるのでしょう?


それはどのようにActiveXからリクエストが送られているかわからないと回答のしようが
ありません。わざわざこのような作りにしているのであれば、そのように設計した人が
いるわけですよね? その設計者に聞くのが先決ではないですか?
未記入
会議室デビュー日: 2005/10/31
投稿数: 6
投稿日時: 2005-10-31 19:19
設計者はマルチパートデータを解析するしかないのかな・・・。
といった感じです。
ですので、何かいい方法はないものかと調査していたのです。
ActiveX側のデータがわからないと駄目ですよね・・・。

ご丁寧に教えていただき、本当にありがとうございました。
めるもちゃん
会議室デビュー日: 2006/05/12
投稿数: 1
投稿日時: 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;
}
}

スキルアップ/キャリアアップ(JOB@IT)