• 締切済み

なぜこうなるのかおしえてください。

boundary0 = multipart/form-data; boundary=---------------------------7d1723a5d04e6 boundary1 = 7d1723a5d04e6 本当ならば上記のようになるのですが、 下記のように連呼してでてきてしまうのはどうしてでしょうか?教えて下さい。 DIR = datafile PASS = sample TITLE = nowhere ACT = 登録1 CMT = 5435 SaveFile::boundary0 = multipart/form-data; boundary=---------------------------7d114e361370146,multipart/form-data; boundary=---------------------------7d114e361370146 SaveFile::boundary1 = 7d114e361370146,multipart/form SaveFile::boundary2 = 7d114e361370146,multipart/form print " $ENV{'CONTENT_TYPE'}<br>

  • aeic
  • お礼率10% (60/582)
  • Perl
  • 回答数1
  • ありがとう数4

みんなの回答

  • Fooky
  • ベストアンサー率71% (59/82)
回答No.1

問題は解決しましたか? 失礼ながら何を質問されているのか、 全く分かりません。他の方の質問を 参考になさって、 ・何がしたいのか   例.メールのファイルから、MIME     マルチパートのバウンダリを     抜き出したい ・どういう結果が欲しいのか ・それに対してとういう結果が出てしまったのか ・プログラムファイルの中の関係しそうな部分 を明確に示してください。 もしかしたら、ご質問の文章の中にそれが含まれて いるのかもしれませんが、どれが出力結果でどれが プログラムなのか、DIR=...って何なのか、 全く分かりません.

関連するQ&A

  • ファイルをアップロードするとファイルの中に・・・

    今、JAVAservletでファイルをアップロードするプログラムを作成しています。 であるサイトを参考に実装することには成功したのですが、予期せぬことに リクエスト内にある取り出す必要のない情報もいっしょにファイルに書き込まれて しまいます。FORMのボタンの情報が一番最後についてくるのです。 content-Type: multipart/form-data; boundary= ---------------------------10265533117308 -----------------------------10265533117308 content-disposition: form-data; name="submitter" username -----------------------------10265533117308 content-disposition: form-data; name="Uploaded file"; filename="abc" [... contents ...]  ← ココのみを取り出したい -----------------------------10265533117308 が、この場所にあるFORMボタンの名前などの情報も引っ付いてしまっている。 ------------------------------------------ どうやら、boundary 文字列 で区切られているという事は 調べたのですが、かといって「boundary」がなんなのかさっぱり わからず、切り離すにもどうしたらいいのかわからない状態なのです。  何か良い知恵を貸してください。 また、そういったことを詳しく乗せているサイトの情報などもお願いします。

    • ベストアンサー
    • Java
  • サーバーでのデコード方法(例えばbase64)

    質問内容 サーバーでのPHPスクリプトではアップロードされたファイルのデコードを行うにはContent-Transfer-Encoding: base64をみて 適切にデコード処理をするのだと考えますがContent-Transfer-Encoding: base64を取得する方法はどのようにすればいいか わからなくて困っています。 $_FILES,getallheaders(),file_get_contents('php://input')等を試しましたが必要な情報は得られませんでした。 知りたい内容は 1.ポストされたアップロードファイルのデコードはどのような判定方法になるか。 2.私は先にも記述しましたがContent-Transfer-Encoding: base64行を判定の基準とするものとと考えています、でもその内容の取得方法がわかりません。 3.および、これらの関連として生のデータ取得についても教えていただければ幸いです。($_POSTや$_FILESに加工される前の情報) 環境: SERVER_SOFTWARE : Apache/2.2.11 (Win32) mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.8 下記はHTTPプロトコルでサーバーに送られたデータストリームです。 (info1とinfo2は質問内容には直接関係はありません) +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ POST /test/xxxx.php HTTP/1.0 Host: 192.168.xxx.uuu User-Agent: wxWidgets 2.x Content-Length: nnn Content-type: multipart/form-data; boundary=_--Boundary_separator --_--Boundary_separator Content-Disposition: form-data; name="info1" AAAAAAAAAAAAAAA --_--Boundary_separator Content-Disposition: form-data; name="info2" BBBBBBBBBBBBBBB --_--Boundary_separator Content-Disposition: form-data; name="file"; filename="anyfile.jpg" Content-Type: multipart/form-data Content-Transfer-Encoding: base64 base64でencodeされたデータ内容の羅列 --_--Boundary_separator-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 以上 よろしくお願いします。

    • ベストアンサー
    • PHP
  • Ajax.Updaterでmultipart/form-dataの送信方法

    <html> <body> <form action="/hoge.cgi" method="POST" enctype="multipart/form-data" target="if"> arg1:<input type="textbox" name="arg1"/><br/> <input type="file" name="data" size="60"> <input type="submit" value="Upload" onclick="post()"/> </form> <iframe name="if" id="if" frameborder="0" border="0" width="730" height="500" scrolling="yes"></iframe> </body> </html> 上記と同じような事をiframeを使わないで実現したいです。 以下の様に書いてみました。 <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd'> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="prototype.js"></script> <script type="text/javascript"> function post(){ var url ='/hoge.cgi'; new Ajax.Updater( $('result'), url, { method: 'POST', parameters: Form.serialize($("form1")), contentType: 'multipart/form-data' } ); } </script> </head> <body> <form id="form1" enctype="multipart/form-data"> arg1:<input type="textbox" name="arg1"/><br/> <input type="file" name="data" size="60"> <input type="button" value="Upload" onclick="post()"/> </form> <div id="result"></div> </body> しかし、/hoge.cgiには前者と同じようなhttpリクエストがわたりません。前者と同じような(下記(1)参照)httpリクエストを発行するにはどうしたらよいでしょうか? (1)前者:httpリクエストの例 POST /hoge.cgi HTTP/1.1 CONTENT_LENGTH: 285 CONTENT_TYPE: multipart/form-data; boundary=---------------------------7d8ea171f055c ~中略~ -----------------------------7d8ea171f055c Content-Disposition: form-data; name="arg1" -----------------------------7d8ea171f055c Content-Disposition: form-data; name="data"; filename="" Content-Type: application/octet-stream -----------------------------7d8ea171f055c-- (2)後者:httpリクエストの例 POST /hoge.cgi HTTP/1.1 CONTENT_LENGTH: 11 CONTENT_TYPE: multipart/form-data; charset=UTF-8 ~中略~ arg1=&data=

  • 初投稿です。

    初投稿です。 質問の仕方がおかしいかもしれませんが、宜しくお願いいたします。 業務でウェブアプリケーションを作っています。 【質問】 FireFox でAjax でデータを送信すると、Content-Type に「application/x-www-form-urlencoded; charset=UTF-8」が設定されてしまいます。 jQuery の $.ajax() のオプションで、「contentType:"application/x-www-form-urlencoded"」と指定しているのですが、必ず「charset=UTF-8」が付加されてしまします。 何とか「charset=UTF-8」の付加を回避する方法は無いでしょうか? ちなみに開発環境は次の様になっています。 【サーバ】 OS:CentOS5.5(エンコードはEUC_JP) Webサーバ:Apach 2.0.63 DB:PostgreSQL 8.2.14 開発言語:Perl v5.8.7 CGI JavaScriptライブラリ:jQuery 1.4.3 【クライアント】 OS:WindowsXP SP3 ブラウザ:IE8、FireFox3.6.11、Safari4.0.4 charset=UTF-8」が設定されてしまい、送信した値がCGIで受け取れない。 【質問の背景】 サーバ側でデータが取得できない原因は、Perlモジュールの(CGI)Lite.pmがフォームの値を取得する処理で、次のようなコードとなっているためです。 ※一部抜粋します。 sub parse_form_data{ $content_type = $ENV{CONTENT_TYPE}; #####▼ 問題はこの部分です。 if (!$content_type || ($content_type eq 'application/x-www-form-urlencoded')) { #####▲ local $^W = 0; read (STDIN, $post_data, $content_length); $self->_decode_url_encoded_data (\$post_data, 'form'); return wantarray ? %{ $self->{web_data} } : $self->{web_data}; } elsif ($content_type =~ /multipart\/form-data/) { ($boundary) = $content_type =~ /boundary=(\S+)$/; $self->_parse_multipart_data ($content_length, $boundary); return wantarray ? %{ $self->{web_data} } : $self->{web_data}; } else { $self->_error ('Invalid content type!'); } } 上記の書き方では、$content_type に値が入ってこないか、「application/x-www-form-urlencoded」だったらとなってしまいます。(あってますよね) 「charset=UTF-8」が付加されたときここを通ってくれずエラー扱いされてしまいます。 先輩に相談したところ、できるだけサーバのモジュールはいじりたくないとのことです。 また、GETメソッドもできるだけ使いたくないといわれました。 長文になってしまいましたが、なにとぞ宜しくおねがいいたします。

  • 要素の上書きについて

    perl初心者です。HTMLのフォームからCGIにデータを送り、そのデータを表示するだけのCGIを作っているのですが、HTMLフォームの中の項目を空のまま送信したときに、CGI側でその表示部分はなくなります。できれば、項目が空の時には、CGIで以前に登録していたデータが上書きされずに表示されるようにしたいのですが、どうしたら良いのかわかりません。どなたかご教授していただけないでしょうか。よろしくお願いいたします。(うまく説明できず、ご迷惑おかけします。) #!/usr/local/bin/perl #データファイル $datafile='./data.dat'; #ライブラリの読み込み require './jcode.pl'; #フォームデータの読み込み if ($ENV{REQUEST_METHOD} eq "POST"){ read (STDIN,$input,$ENV{CONTENT_LENGTH}); }else{ $input=$ENV{QUERY_STRING}; } #フォームデータのデコード $input =~ tr/+/ /; $input =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg; #SJISコード変換 &jcode::convert(\$input, 'sjis'); #データのオープン open(DAT,"+< $datafile"); flock(DAT, 2); #データの書き込みとクローズ seek(DAT,0,0); print DAT $input; close(DAT); open(IN,"$datafile"); $input=<IN>; #フォームデータの分解 @form=split (/&/,$input); close(IN); &header; print "<div class=\"iframe_body\">"; #データを表示する(左側) print "<div class=\"iframe_left\">"; $a=$form[0]; $a=~s/名前=/ /; print "<b><font color=\"#ff0000\">$a</font></b>"; print "<br>"; $a=$form[1]; $a=~s/画像=/ /; print "<img src=\"$a\" width=\"120\" height=\"100\" border=\"0\">"; print "<br>"; $a=$form[2]; $a=~s/住所=/ /; print $a; print "<br></div>"; #データを表示する(中央) ・ ・ #データを表示する(右側) ・ ・ print <<EOM; </body> </html> EOM exit; #----------------------------------------------------------------------------------- # HTMLヘッダー #----------------------------------------------------------------------------------- sub header { print "Content-type: text/html\n\n"; print "<link rel=\"stylesheet\" href=\"../iframe.css\" type=\"text/css\">\n"; print <<EOM; <html> <head> <META HTTP-EQUIV="Content-type" CONTENT="text/html";charset=shift_jis> <title></title> </head> <body> EOM }

    • ベストアンサー
    • Perl
  • BASP21のファイルアップロードでエラー

    IIS7.0の環境にBASP21をインストールして、ブラウザからのファイルアップロードを処理しようとしています。BASP21は、BASP21-2003-0211.exe をインストールしました。 症状は、ブラウザ(MSIE 7.0.5730.13)からファイルアップロードをすると、うまくいくときもあるし、うまくいかないときもあるという感じです。 うまくいくときは FormSaveAs でファイルが保存され、そのファイルを読み出して処理することができます。 うまくいかないときは FormSaveAs が -2(名前が見つかりません)を返し、ファイルが保存されません。 HTMLのフォームの部分は以下のようになっています。 <form enctype="multipart/form-data" method=POST action="upload1.asp"> <input type="hidden" name="MAX_FILE_SIZE" value="3000000"> ファイル名:<input type="file" name="userfile" size="60"><br /> <input type="submit" value="ファイルを送信"><br /> </form> 同じファイルを何度も送信して試してみたところ、a = Request.TotalBytes のところで、a にセットされる値が変わることがわかりました。 テストに使ったファイルでは、うまくいくときは 818 になり、うまくいかないときは 821 になりました。ファイルそのものは 413 バイトなので、付加されるヘッダ情報に違いがあるのではないかと思いました。 そこで、パケットモニタを使用して送信されるデータを見てみたところ、boundary= の後ろに指定される文字の長さによって動きが変わってくるように見えました。 マイナス連続の後ろが 7d934f3211530(13文字)→NG マイナス連続の後ろが 7d9274d11530(12文字)→OK 送信フォームの中にはパーツが2つあり、末尾のboundaryも含めて3つになりますので、1文字違うと合計で3バイト違ってきますので計算は合います。 このあたりの情報は、どこかにないでしょうか?BASP21の使い方が悪いのか、HTMLやASPの書き方が悪いのか、わからないので困っています。

  • onclickで複数のボタンで対応したCGIにデータを送りたいのですが。

    下記のような感じで、 1.画像追加ボタンを押すと別ページ(b.cgi)に飛んで登録が終わったらまたこちらに戻ってきて、登録が押されるとそのまま登録処理(a.cgi)になる。 2.画像追加がされていなくても登録が押されるとそのまま登録処理をする。 (1.2.ともform内の情報はhiddenですべて送ります。) こんな動きをさせたいのですが、参考サイトなどをみてもこういう動作をしているところがなくて丸3日悩んでいます。 onclick=submit の記述とJavascriptの書き方が問題だとは思うのですが煮詰まってしまいました。 皆様には初歩的な質問かもしれませんがどうぞよろしくお願いします。 <form method="post" enctype="multipart/form-data"> <input type="text" name="Title" value="" size="140"> <input type="text" name="Body1" value="" size="140" style="ime-mode: active;"> <input type="button" value="画像追加" onclick="submit(document.gazouform)"> <input type="button" value="登録" onclick="submit(document.tourokuform)"> <form action="a.cgi" method="post" enctype="multipart/form-data" id="tourokuform"> </form> <form action="b.cgi" method="post" enctype="multipart/form-data" id="gazouform"> </form>

  • 変数の表示の仕方(改行の扱い)

    perl初心者です。よろしくお願いします。 ひとつの変数で、print関数での表示とテキストエリアでの表示を しようとしているのですが、改行の扱いに困っています。 テキストエリアで<br>を表示させないようにすると、print関数の 方の改行がなくなるし、print関数の方に改行させると、テキスト エリアで<br>が表示されるし・・・。 print関数で改行、テキストエリアでは<br>が出ずに改行という 風にしたいのですが、どなたかご教授していただけませんか? よろしくお願いします。 #!/usr/local/bin/perl use strict; #データファイル my $datafile='./data.dat'; #ライブラリの読み込み require './jcode.pl'; my $input; #フォームデータの読み込み if ($ENV{REQUEST_METHOD} eq "POST"){ read (STDIN,$input,$ENV{CONTENT_LENGTH}); }else{ $input=$ENV{QUERY_STRING}; } #フォームデータのデコード my %form = (); my @pairs = split(/&/, $input); foreach my $pair ( @pairs ){ my( $name, $value ) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg; #SJISコード変換 &jcode::convert(\$value, 'sjis'); $value =~ s/\r\n/<br>/g; $value =~ s/\r/<br>/g; $value =~ s/\n/<br>/g; $form{$name} = $value; } #データのオープン open(DAT,"+<$datafile"); flock(DAT, 2); #ファイル読み込み my $line = <DAT>; for ( split /\t/ , $line ) { my( $key , $value ) = $_ =~ /^([^=]*)=(.*)$/; #フォームデータの上書き $form{$key} ||= $value; } #データの書き込みとクローズ seek(DAT,0,0); $line = ''; while (my($key,$value) = each %form) { $line .= "${key}=${value}\t"; } print DAT $line; close(DAT); &header; print $form{A}; print "<br>"; print $form{B}; print "<br>"; print $form{C}; print "<br>"; print <<EOM; <b>[内容確認]</b> <form action="new.cgi" method="POST"> <INPUT TYPE="text" SIZE="27" name="A" value="$form{A}"><br> <INPUT TYPE="text" SIZE="90" name="B" value="$form{B}"><br> <TEXTAREA name="C" ROWS="2" COLS="27">$form{C}</TEXTAREA><br> <input type="submit" value="上記内容で送信"> </form> <br> </body> </html> EOM exit; #----------------------------------------------------------------------------------- # HTMLヘッダー #----------------------------------------------------------------------------------- 割愛

    • ベストアンサー
    • Perl
  • perlがうごきません

    <html> <head> <title>form3</title> </head> <body> <form action="form3.cgi" method="post" name="form3"> <input type="text"name="form3"> <input type="submit"value="送信"> </form> </body> </html> ::::::::::::::::::::::::::::::: #! /usr/bin/perl if($ENV{"REQUEST_METHOD"} eq "GET"){ $str=$ENV{QUERY_STRING"}; }else{ read(STDIN, $str, $ENV{"CONTENT_LENGTH"}); } $str=~ tr/+/ /; $str=~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("c", hex($1))/eg; foreach(split(/&/, $str)){ my ($key, $value)=split(/=/, $_); $data{$key}=$value; } print "Content-type:text/html\n"; print "\n"; print "<html>\n"; print "<head><title>form3</title></head>\n"; print "<body>$data{'form3'}</body>\n"; print "</html>\n"; exit; :::::::::::::::::::::::::::::::: どうしてもうごきません。 どこかスクリプトがまちがっているのでしょうか。 パールのパスはあっています。

    • ベストアンサー
    • Perl
  • perlの文でわからないところがあります。(2)

    こんにちわwindwsです。パールの文章でわからない箇所があります。先輩の皆さま、どうか宜しくお願いします。以下に文章を書きます。 (1) BEGIN {$ENV{PATH} = "/bin/usr/bin";   delete @ENV{pw (IFS CDPATH ENV BASH_ENV)};  ●sub unindent;} 特に●のヵ所はどう考えたら良いのか解りません。サブルーチンを宣言しているのですか?サブルーチンの戻り値を呼び出しているのでしょうか? (2) <FORM ACTION="/cgi/program.cgi" METHOD="POST"> <INPUT TYPE="hidden" NAME="id" ● VALUE="e07a08c4612b0172a162386ca558c6"> ここの●の行で識別子VALUEの値は誰がどのようにして決めるのですか? 宜しくお願いします。

    • ベストアンサー
    • Perl