- PR -

HTMLからのファイルのアップロードについて

投稿者投稿内容
ナスティキャット
常連さん
会議室デビュー日: 2004/03/03
投稿数: 24
投稿日時: 2004-03-09 16:00
こんにちはナスティキャットです。

昔作ったファイルのアップロードが動かなくなってしまいました・・・
コードはいじってないはずなのですが・・

HTMLからファイルをアップしてjavaで保存するプログラムです。
アップしてるのに、リクエストで受け取ってくれません。
HTML----------------------------------------------------------------------------
<FORM METHOD="POST" name="frm" ACTION="/Bulletin/servlet/Add1" method="post" >
<TABLE BORDER="2">
<TR><TD>画像</TD><TD><INPUT TYPE="file" NAME="fileName" VALUE="参照"></TD></TR>
</TABLE>
<BR>
<INPUT TYPE="submit" NAME="アップ" VALUE="アップ">
</FORM>
--------------------------------------------------------------------------------

JAVA----------------------------------------------------------------------------

public void doPost(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException {
try{
int bufsize = 1024*10;
byte[] b = new byte[bufsize];
ServletInputStream in= req.getInputStream();
try{
while((count=in.readLine(b,0,bufsize)) != -1){
--------------------------------------------------------------------------------
ここの時点でwhileを抜けてしまいます・・・
恐らくreq.getInputStream()が取得できていないためと思われますが,
なぜ急にServletInputStreamが取得できなくなってしまったのでしょう?
どなたかご教授ください



_________________


[ メッセージ編集済み 編集者: ナスティキャット 編集日時 2004-03-09 16:04 ]
yuzy
大ベテラン
会議室デビュー日: 2002/02/14
投稿数: 117
投稿日時: 2004-03-09 16:16
ファイルをアップロードする場合は
<FORM ENCTYPE="multipart/form-data" ACTION=...>
のようにENCTYPEを指定する必要があるのでは?
ナスティキャット
常連さん
会議室デビュー日: 2004/03/03
投稿数: 24
投稿日時: 2004-03-09 17:51
yuzyさんありがとうございます。

その部分が消えてしまっていたようです。
そこを戻したら解決しました。
ナスティキャット
常連さん
会議室デビュー日: 2004/03/03
投稿数: 24
投稿日時: 2004-03-18 15:32
こんにちは。

前回、yuzyさんのおかげでファイルはアップできましたが、この方式を使ったら、
HttpServletRequestのgetParameterメソッドでnullが返ってきてしまいます。
このような現象を回避するにはどうしたらよいのでしょうか?
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2004-03-18 15:39
引用:

ナスティキャットさんの書き込み (2004-03-18 15:32) より:
こんにちは。

前回、yuzyさんのおかげでファイルはアップできましたが、この方式を使ったら、
HttpServletRequestのgetParameterメソッドでnullが返ってきてしまいます。
このような現象を回避するにはどうしたらよいのでしょうか?


 その方法では取得できませんので、
ストリームを解析して、パラメーターを取り出してください。
だいたい、以前はどうされていたんでしょうか?
ナスティキャット
常連さん
会議室デビュー日: 2004/03/03
投稿数: 24
投稿日時: 2004-03-18 15:44
takuさん返信ありがとうございます。

以前は、ファイル以外のパラメータは送っていなかったので・・・・
今回他のパラメータを送ったら受け取れなかったのです
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2004-03-18 15:59
引用:

ナスティキャットさんの書き込み (2004-03-18 15:44) より:
takuさん返信ありがとうございます。

以前は、ファイル以外のパラメータは送っていなかったので・・・・
今回他のパラメータを送ったら受け取れなかったのです


 ファイル名はどうされているんでしょうか?
以前の状態でも、指定したファイル名は送られてきたはずです。
SJ0392
ベテラン
会議室デビュー日: 2004/02/05
投稿数: 62
お住まい・勤務地: 神奈川・横浜
投稿日時: 2004-03-18 18:12
>ファイルをアップロードする場合は
><FORM ENCTYPE="multipart/form-data" ACTION=...>
>のようにENCTYPEを指定する必要があるのでは?
この場合のPOSTストリームデータは下記のようになります。
コード:
--bound
Content-Disposition: form-data; name="user"

SJ0392
--bound
Content-Disposition: form-data; name="upload"; filename="C\test.txt"
Content-Type: text/plain

aiueo

--bound--



>HttpServletRequestのgetParameterメソッドでnullが返ってきてしまいます。
ナスティキャットさんが最初に投稿したformの形式で、ユーザ名とパスワードを
送信しようとすればPOSTストリームデータは下記のようになるはずです。
コード:
user=SJ0392&pw=xxx


getParameterは、この「user=SJ0392&pw=xxx」という形式の場合のみ取得できます。

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