締切済み IIS6でmultipart/formdataがPOSTできない 2004/01/19 12:01 IIS6にてFORMのENCTYPEをmultipart/formdataにしてデータをPOSTすると、アクセス拒否となってしまうのですが、どうすればできますか? ActivePerl 5.8 みんなの回答 (4) 専門家の回答 みんなの回答 nta ベストアンサー率78% (1525/1942) 2004/01/23 22:15 回答No.4 お役に立たなくてすみません。 当方では全くこうした問題がなく、ファイルのアップロードに失敗するということなので回線の問題かもしれないと思っていたところです。フリーソフトでできるのであればバグがあるのかもしれません。 質問者 お礼 2004/01/26 11:02 難題をふっかけておいて結局逃げてしまってすみません。 いろいろとありがとうございました。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 nta ベストアンサー率78% (1525/1942) 2004/01/23 14:43 回答No.3 最初の質問にそのようなことが書かれているのを見ましたが、typeはmultipart/form-data と-が必要なのではないんですか。 質問者 補足 2004/01/23 21:57 すみません、ここへの記入ミスで、HTMLではmultipart/form-dataとなっていました。 原因がわからないので、フリーソフトですませようと思います。 ありがとうございました。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 nta ベストアンサー率78% (1525/1942) 2004/01/23 10:38 回答No.2 よくあるケースとして、 (1)匿名ユーザIUSER_(コンピュータ名)のログイン時のデフォルトのディレクトリが設定されていないため、相対パスで書かれているスクリプトに到達できない。Unix系ではデフォルトルートが設定されているがWindowsではそのようにならない。同様に関連ファイルへも絶対パスを通さないとアクセスできない。 (2)受け取り側のCGIのスクリプトへのアクセス権の設定が匿名ユーザにはアクセスできない状態。 (3)サイトのアプリケーションの設定において構成ボタンで表示される拡張子とアプリケーションの関連設定に.cgiを追加していない。 です。ご確認ください。 質問者 補足 2004/01/23 12:10 ENCTYPE=multipart/formdata を指定しない場合は、ファイルが送れないことを除いて正常に動作します。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 nta ベストアンサー率78% (1525/1942) 2004/01/21 03:06 回答No.1 IISのログにはどのように書かれていますか。 質問者 補足 2004/01/23 01:49 C:\WINDOWS\system32\LogFilesのログには何も書かれていませんし、イベントビューアにもそれらしきものは何もないのです。 スクリプトはLinuxのApacheで使っていたもので、そちらでは正常に動いていました。 また、フリーソフトのanhttpdを使ってみたところ、正常には動作しませんでしたが、POSTは成功していました。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発Perl 関連するQ&A iis+cgiでmultipart/form-data送信がうまくいかない これまでLinux+Perl/CGIで構築していたWEBサーバをIIS+Perl/CGIに移す必要が生じ、新規にIISによるWEBサーバを構築しました。 一気にコンテンツを移動してもハマるだけだと考え、まずは簡単なコードを記述しCGIが動作するかどうかテストしています。 POSTによるinput type=textのデータ表示まではうまく行きましたが、ファイルアップロードのところで詰まりました。 IIS(Windows)によるWEBサーバの構築は初めてで、何が問題なのかサッパリわかりません。 どなたか問題点あるいはどこをチェックすれば良いかご指摘いただけませんでしょうか。 ●やった事 PerlにてPOSTを利用しmultipart/form-dataにてファイルをアップロードするシンプルなコードを書き、第一段階としてMIMEエンコードされたものをブラウザ上に表示するしようとしてみた。 コードは最下方の通り。 ●症状 送信を実行してもアップロード中のまま(ウィンドウマークが動き続けている)で、IISに設定してある10分程のタイムアウト時間を過ぎて終了してしまう。 TXT、XLS、DOCなどファイル種を変えて試しても全く同じ症状。 ●環境:Windows2000ServerSP4 IIS5.0 Perl5.8.8 *******アップロード画面****** <HTML> <HEAD> <TITILE>ファイルのアップロード</TITLE> </HEAD> <BODY> <FORM ACTION="/cgi-bin/upload.cgi" ENCTYPE="multipart/form-data" METHOD="POST"> ファイル: <INPUT TYPE="file" NAME="File" SIZE="32"><BR> <INPUT TYPE="submit" VALUE="送信"> </FORM> </BODY> </HTML> **********ここまで*********** *******CGI******************* #!/perl/bin/perl read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); print "Content-type: text/html\n"; print "\n"; print "<HTML>\n"; print "<HEAD>\n"; print "<TITLE>test</TITLE>\n"; print "</HEAD>\n"; print "<BODY BGCOLOR=\"#ffffff\">\n"; print "$buffer"; print "</BODY>\n"; print "</HTML>\n"; exit; ********ここまで*********************** JSP「multipart/form-data」 enctype= "multipart/form-data"をでsubmitしたテキスト・チェックボックス・ラジオボタンデータは、 request.getParameterでの取得はできません。 "multipart/form-data"を指定してかつテキストデータ等を取得する方法はありませんか。 ソースの追加のみで行いたいです。 enctype="multipart/form-data" アップローダーのHTMLで、FORMのタグに enctype="multipart/form-data"が必要なのはバイナリファイルをアップロードする時だけですか? ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム POSTされない xamppにてローカル環境でやっているのですがなぜか type="file"だけPOSTされません。 ie6とfairefox3で試しましたが取得できませんでした。 調べてみたのですが同様の事例が見つからずわからかったのですが これは何が原因なのでしょうか? ---html--- <form action="index.php" method="post" enctype="multipart/form-data"> <input type="text" name="name" /> <input type="file" name="img" /> <input type="submit" name="send" value="送信する" /> </form> ---php--- if (isset($_POST['send'])) { echo '<pre>'; print_r($_POST); echo '</pre>'; } print_r($_FILES);を試すと正常に値が表示されます。全く意味不明 なのですが何かセキュリティ上の問題などが原因なのでしょうか? multipart/form-dataを使用した場合変数が受け取れない フォームにmultipart/form-dataを使用した場合いつも通り$_POSTが受け取れないのですが、試しにエンコーディングタイプを無しにしたら普通に受けとれます。 multipart/form-dataを使用した場合$_POSTの受け取り方も変わってしまうのでしょうか? 勝手な予想ではいつも通り+$_FILESが使えるようになるだけだと思っているのですが…。 ページ自体のエンコードはeuc-jpです。 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= Dojo1.2でAjaxのpostをしたい こんにちは。 Dojo1.2でAjaxのPostをしているのですが、値が受けわたっていきません。 ファイルアップロードをしているのですが、Fileを認識しません。 確認はIE6で行ってます。 ・呼び出し元 var param = new Object(); param['file'] = document.edit._file.value; ajaxPost("test.action", param); ... <form name="edit" enctype="multipart/form-data" method="post"> <input type="file" name="file" id="_file" size="50" maxlength="255" value=""/> </form> ・Ajax呼び出し function ajaxPost( rurl, parameters) { dojo.xhrPost ({ url: rurl, //form: 'post-form', parameters: parameters, load: function (data) { }, error: function (error) { alert(error); } }); } このようにしていますが、どこが悪いのでしょうか?できればform=editで指定できれば良いのですが・・、エラーとなってしまう為、parameterとして格納したつもりです。 Action内には到達しているのですが、Fileを認識できていない状態です。(フレームワークはwebwork2を使ってますが、省略しました) お分かりになりましたら、よろしくお願いします。 multipart/form-data と $_FILE[ ] いつもお世話になってます。 multipart/form-dataにて、ファイルを受け取るとき、PHPでは、$_FILE変数に name="xxxx1"の名前が、$_FILE["xxxx1"]で取ることができます。 そこで、multipart/form-dataの filename="xxxxx.csv"という値は、 $_FILE["xxxx1"]["name"]に入ってくるのか、 それとも、 $_FILE["xxxx1"]["temp_name"]に入ってくるのかが、わかりません。 いろいろググッては見たのですが・・・。 どなたか、わかる方いらっしゃいますか? IISでPOSTリクエストのエラー IISでPOSTリクエストを実行すると、HTTP エラー 405.0 - Method Not Allowed 無効なメソッド (HTTP 動詞) が使用されているため、検索しているページを表示できません。 が表示されててしまいます。 IISのハンドラマッピングで 要求パス:*.html モジュール:ServerSideIncludeModule ハンドルする動詞:次の動詞のうちひとつ(GET,POST) アクセス:スクリプト に設定してます。 他に設定があるのか教えてください 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> APSでのFROMでのENCTYPEについて 動作環境:ASP(VBScript) サーバー:WindowsXPpro PC:WindowsXPHe 本の例題に「<FORM ACTION="aaaa.asp" ENCTYPE="multipart/form-data" METHOD="POST">」とありました。 このENCTYPEの意味が解説してないので調べましたが わかりません。また、この指定をしないと普通にRequest命令で送信内容を受け取れるのですが、指定すると受け取れません。 1この指定の意味 2これを使って受けると方法 の2点を教えてください。 formでファイルアップロードとテキストデータを送信したい JSPとServletでプログラムを作っております。 フォームで次のことをしたいと思っております。 1、DBにファイルをアップロードする。 2、DBにテキストデータを登録する。 この場合、 <form enctype = "multipart/form-data"> <form enctype = "text/plain"> を別個に指定できるのでしょうか? 出来ないとしたらどういう解決方法があるのでしょうか? 宜しくお願いいたします。 AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム cgi.pm を使用してファイルUP時にtextエリア等の情報もcgiに引き渡す 何度もPerlのところで質問していますが・・・今回は ファイルのアップロードをするときに少々もんだいが出てきてしまうことについてです。<input type="file"... を使います 以下の二つのファイルで構成しています(一部分だけ) ---form.html--- <form action="upload.cgi" method="POST" ENCTYPE="multipart/form-data"> <textarea name="input_textarea" rows="20" cols="70"></textarea> <input type="file" name="File" size=32> <input type-"submit" value="ok"> ---upload.cgi--- [formからの情報を配列変数に代入するスクリプト・・・] use CGI; $query = new CGI; $filename = $query->param('File'); # ファイル名の取得 $type = $query->uploadInfo($filename)->{'Content-Type'}; 同じファイル名が無いことを確認して、保存 という処理を行っています。upload.cgiの中身がとぼしくて申し訳ありません。 かなり省略してます。 さて、、問題となるのは ENCTYPE="multipart/form-data" とすると 配列変数にFORMからの情報がうまく入ってくれないということです、 かといってENCTYPE="multipart/form-data"を外すと CGI.pm を使った ファイルのアップロードができなくなってしまいます。 ENCTYPE="multipart/form-data" のオプションをつけて 配列変数にテキストエリアの内容を入れるにはどうすればいいのでしょうか。 テキストエリアを取り除くとファイルのアップロードはできます。 ただ、ファイルと入力したテキストを同時に処理することができないんです。 multipart/form-dataを使ったデータ送信について 色々調べましたが分からなかったので質問させてください。 ある配列データをmultipart/form-dataを使い送信したいと、 考えています 例) [sample1.php] $data = array("saitama","kanagawa","chiba"); //このsample1.phpファイルから$dataをmultipart/form-dataを使い、 //sample2.phpファイルに送信したいと考えています。 [sample2.php] //$dataを受け取る 調べましたがフォームを介して送信する方法はいくつかありましたが、 フォームを使わずに送信する方法がわかりませんでした。 どなかた教えていただけないでしょうか。 よろしくお願いいたします。 フォームのPOST情報が渡らない? こんにちは。 PHPを使ってフォームからの入力情報をPOSTで受け取り確認画面を出す、というような機能を作成しているのですが、たまにデータが受け取れずに初期画面へ戻ってしまう現象が起こります。 POSTではなくGETにするとキチンと送信出来ているようなのですが、情報量やその他の面からGETを使うことは避けたいと思っています。 POSTされた情報が受け取れないという現象は、再現が難しく、出るときは出るし出ないときはまったく出ません。 これまで調べた回避方法で以下の2つは試してみましたが、どちらも現象を止めるには至りませんでした。 ・<form>タグに『 enctype="multipart/form-data"』を追加する ・<input type="hidden" name="spoof">を追加する また、マルチバイト文字をフォームに入力しない場合は、現象がまったく再現しないようでした。 この現象の回避策を何かご存知の方、アドバイスよろしくお願いいたします。 ------使用環境-------------- OS :Windows2000 ブラウザ:Internet Explorer 6.0.2800.1106(更新バージョンSP1) Apache :Server version: Apache/1.3.29 (Unix) PHP :PHP 4.3.4 (cli) (built: Dec 1 2003 18:13:50) ------POST情報取得処理------ function get_post_vers(){ foreach($_POST as $key => $val){ $GLOBALS["$key"] = $val; } return; } $.postとPerlのデータ受け渡しについて 現在、 $.postを使ってPerlにリクエストを送り、帰ってきた値を表示するという事をしたいのですが、Internal Serverエラーとなりますが、どこにエラーがあるのかがわからない状態です。 実行権限などは与えています。 以下に書いたプログラムを貼りますので、間違いがありましたら是非教えていただきたいです。 HTML index.html <!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"> <title>Test Page</title> <script type="text/javascript" src="../lib/jquery/jquery-1.3.2.js"></script> <script type="text/javascript" src="./JS/test.js"></script> </head> <body> <form id="form01"> <input type="text" name="title" id="title01" value="post"><br> <input type="button" value="post" onClick="getValue()"> </form> <div id="res_title"></div> </body> </html> JavaScript test.js function getValue(){ //フォームのデータ取得 var pos_title = $('#title01').attr('value'); //var comment = $('#comment').attr('value'); //フォームデータのPOST送信+コールバック $.post("./cgi-bin/post.pl", {"title" : pos_title}, disp); } function disp(data){ $('div#res_title').html(data); } Perl post.pl #!/usr/bin/perl -w use strict; use warnings; my $formdata; if ($ENV{'REQUEST_METHOD'} eq "GET") { $formdata = $ENV{'QUERY_STRING'}; } else { read(STDIN, $formdata, $ENV{'CONTENT_LENGTH'}); } return $formdata; スマホサイトでの画像をPOST スマホサイトで画像アップロードのフォームを作成しています。 5つほど添付できるようにしています。 form.php <form action="./send.php" method="post" enctype="multipart/form-data" novalidate="novalidate"> 画像<br> <?php for($i = 1; $i <= 5; $i++) { echo '<input type="hidden" name="item_img_name[' .$i. ']" value="' .$_SESSION['item_img_name'][$i]. '">'."\n"; echo '<input type="file" name="item_img[' .$i. ']" id="item_img_' .$i. '" value=""><br>'."\n"; } ?> <input type="submit" value="送信"> </form> 以上の内容でフォームを作成しております。 問題なのが、サブミットした際send.phpに切り替わるのがかなり遅く大変困っています。 1つにつき2MGの画像サイズを早くPOSTさせる方法はありませんでしょうか。 IISのアクセス権について XPから2003サーバーのIISに接続しようとすると、このコンピュータからのアクセスは拒否されました。と言うエラーメッセージや、アクセス権がありませんと言うエラーメッセージが表示されます。どこをどうすれば良いのか検討もつきません。 IISでXPから2003サーバーに接続するには、どのような設定を行えば良いのでしょうか。 _URL_の意味がわからない のですが例えば <FORM ENCTYPE="multipart/form-data" ACTION="_URL_" METHOD="POST"> <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000"> Send this file: <INPUT NAME="userfile" TYPE="file"> <INPUT TYPE="submit" VALUE="Send File"> </FORM> においてファイルを入力してサブミットすればどういうことがおきるのでしょうか? ファイル選択ダイアログでファイルの種類を指定する方法 下記のプログラムでファイル選択のダイアログを表示しますが 【ファイルの種類】をデフォルトでCSVの指定はできますか? よろしくお願いします。 <html> <body> <form enctype="multipart/form-data" action = "test_02.php" method = "post" > <input type="file" name="file_data1"> <input type="submit" name="FILE送信" value="FILE送信"> </form> </body> </html> 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
お礼
難題をふっかけておいて結局逃げてしまってすみません。 いろいろとありがとうございました。