ASP.NETでPOSTされたデータを受信する方法と拡張子の取得方法

このQ&Aのポイント
  • ASP.NETでPOSTで送信されたデータを受信する方法と、拡張子の取得方法について紹介します。
  • WindowsアプリケーションからHTTPハンドラを経由してPOSTする方法を解説します。
  • HTTPハンドラのサーバーサイドで拡張子を取得し、乱数を付加して保存する方法についてお伝えします。
回答を見る
  • ベストアンサー

ASP.NETでPOSTで送信されたデータを受信

Windows アプリケーションからHTTPハンドラ(.NET4/VB.NET/ashx)へ下記のようなコード(.NET3.5/VB.NET)を使ってPOSTし My.Computer.Network.UploadFile("C:\a.jpg", "http://localhost/upload.ashx") HTTPハンドラ(ここではupload.ashx)側で拡張子を取得し、乱数をくっつけて保存したいと思っています。 しかし「context.Request.InputStream」を利用すると拡張子がわからず適切な拡張子で保存できないのでほかの方法でサーバーに保存できないかと思い質問させていただきました。 お忙しいとは思いますが回答よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1
web2-0
質問者

お礼

ありがとうございます。その方法でできました。

関連するQ&A

  • HTTPハンドラでPOSTした値を受け取りたい。

    C♯でASP.NET環境にて開発をしています。 htmlにボタン(submit)を置いて、postが来たら、ashx(HTTPハンドラ) のほうでリクエスト値を見てDBから値を取り、結果を返したいと思っています。 結果については、JavaScriptのほうでinnerHTMLを使って反映させる予定です。 オンロードでJavaScriptのメソッドを呼んでるんですが (body onload = "test();") (input type hiddenでいくつかの値がpostされるように なっています) function test() { var ret = new Ajax.Request('GetValue.ashx'),{ method:'post' … } こんな感じでashxを呼んでるものの、htmlでpostした値が 受け取れません。 context.Request.Querystringで取ろうとしてるんですが… htmlでリクエストした際に、JavaScriptを呼んで、そこでajaxリクエストをしている という作りがまずいのでしょうか? HTTPハンドラを使うのが始めてなので、頓珍漢なことをしているかも しれませんが、ご教授いただけると助かります。 宜しくお願いします。

  • ASPでpostしたデータを受信出来ない

    はじめまして、ASP初心者です。 質問させてください。 以下のような form タグがある sample.asp <form method="post" action="posttest.asp"> <input type="text" name="indata1" /> <input type="password" name="indata2" /> <input type="submit" value="送信"> <input type="reset" value="キャンセル"> </form> 以下の内容の posttest,asp <%@ language="VBSCRIPT" %> <html> <head> <title>request</title> </head> <body> データ1: <% Response.Write(Request.Form("indate1")) %>: <br> データ2: <% Response.Write(Request.Form("indate2")) %>: </body> </html> 以上を IIS V5.1 をインストールしたPCの c:\Inetpub\wwwroot\test\ 配下に置いています。 で http://localhost/test/sample.asp をブラウザで開いて inputフォームの2箇所を入力して 送信でpostするのですが posttest.asp の表示はされるのですが、Request の中身が入って こない状態です。 全く成功せず困っております。 ・Visual Studio Web Developer をインストール後 IIS をインストールしました。 その後エラーの為(IISメタベースにアクセスできませんでした) 調査し、C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -i で解決しました。 これが原因でしょうか?

  • emlファイルのデーターのpost送信について

     perl初心者なのですが質問いたします。 自分のレンタルサーバーのメールアドレスに携帯から 写メールを送信してそのメールを MIME::Parser;を使って 画像と本文を取り出しpost送信してを自分のHPに出力で きるのではと思いスクリプトを書いてるのですが MIME::Parserの取ってきたデーターが素直に送れない 様なので悩んでおります。 流れ的にはNet::POP3で  my $messages = $pop3->list(); foreach $id (sort (keys %{$messages})) { my $message = $pop3->get($id); ....... と$messageでメールを任意のディレクトリに保存して MIME::Parser;で$messageを解析してます。 #本文の取得 my $entity = $parser->parse_data($message); my $subject = $entity->head->get('Subject'); my $body_entity = ($entity->is_multipart) ? $entity->parts(0) : $entity; my $body = $body_entity->bodyhandle; my $bodylast = $body->as_string; #添付ファイルの処理 my $uploadFile = $entity->parts(1)->bodyhandle->as_string; # リクエストの生成 my $url = 'http://xxx.cgi'; my %formdata = ('perl' => 'rakuda', 'comment'=>"$bodylast",'upfile'=>"$uploadFile"); my $request = POST($url, [%formdata]); # UserAgentを生成して処理 my $ua = LWP::UserAgent->new; my $res = $ua->request($request); print $res->as_string; $pop3->delete($id); $pop3->quit; 一応送られてはいる様なのですが commentの部分は文字化けしてます、大元のレンタルサーバのソース をしらべると Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: 7bit というエンコードがされてるようです。 そしてupfileの部分はxxx.cgiのチェック部分の     foreach (@in) { if (/(.*)Content-type:(.*)/i) { $content=$2; } if (/(.*)filename=\"(.*)\"/i) { $fname=$2; }     ..... の部分でクリア出来ないようで設定したエラーがでてしまいます。 (因みにxxx.cgiはfirefoxやIEからは問題なくpostできます) レンタルサーバーの添付画像の部分のソースは Content-Type: image/jpeg; name="091108_1053~0001.jpg" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="091108_1053~0001.jpg" となっておりbase64エンコードのようです。 調べてMIME::Base64;もレンタルサーバーにインストールされてたので  my $uploadFile = encode_base64($uploadFile); ともしてpostしてみたのですが上のチェック部分のエラーが出てしまいます。 長くなってしまいましたが、MIME::Parserで取り出したcomment部分と upfile部分をどうにか正常に出力されるように送りたいのですが自分で はもう底です。 もしかしたら無駄に遠回りしてるかも知れませんが御教示していただけたら ありがたいです。

  • データ送信の方法 vb.net

    VB.NETで インターネット経由でテキスト情報を送信したいのですが 受信側はメールアドレスです HTTPやFTP、SMTP、POSTなど、いろいろあるようなのですが 環境に左右されずに必ず送れる方法を使いたいと考えています。 HPのフォームから送信するのはPOSTだと思うのですが やはりPOSTが環境に左右されにくいのでしょうか? また、もっと良い方法があったら教えていただけませんでしょうか。

  • Rubyでnet::httpを用いてPOSTする

    今晩わ。 RubyでNet::HTTPをもちいてPOST送信する際の処理について 質問です。 Net::HTTPクラスのインスタンスメソッドのpostメソッドを用いて送信する場合 送信内容を # version 1.2 (Ruby 1.8.x or later) response = http.post('/cgi-bin/search.rb', 'query=subject&target=ruby') 上記のように、引数に渡していると思います。 このとき、値の中にパラメータのデリミタと同じ&を入れたい場合どうしたらいいのでしょうか? 例えば query=subject&target=ruby&PHP のような感じでvalueとして&を渡す場合です。 Net**HTTP::Postクラスのrequestメソッドを用いてハッシュとして渡した時は問題なかったのですが、上記のpostメソッドの時がPOSTされた値を取得するときにキチンと取得できませんでした。これはなにか対処方法があるのでしょうか? ご教授ください。 おねがいします。

    • ベストアンサー
    • Ruby
  • IISでPOSTリクエストのエラー

    IISでPOSTリクエストを実行すると、HTTP エラー 405.0 - Method Not Allowed 無効なメソッド (HTTP 動詞) が使用されているため、検索しているページを表示できません。 が表示されててしまいます。 IISのハンドラマッピングで  要求パス:*.html  モジュール:ServerSideIncludeModule  ハンドルする動詞:次の動詞のうちひとつ(GET,POST)  アクセス:スクリプト に設定してます。 他に設定があるのか教えてください

  • ファイルのアップロードの方法をお教えください

    初心者で困っております。何卒よろしくお願いいたします。 次のHTMLで画像をアップし、受け側のPHPで保存しようとしていますが、どうしてもエラーになってしまいます。 何もわかりませんもので、解決の方法を教えていただければ幸いです。 ファイルの送り側のHTMLファイル <html> <form action="upload_save_test1.php" method="POST" enctype="multipart/form-data"> <input type="file" name="uploadfile" size="60"> <input type="submit" name ="reg" value="登録"> </form> </html> 受け側のupload_save_test1.php <?php if(!move_uploaded_file($uploadfile,"tem.jpg")){ print "保存に失敗しました"; } ?> 何か根本的な問題なのでしょうか?

    • ベストアンサー
    • PHP
  • JQueryのpostメソッドでファイルをアップロードする方法を教えてください

    以下の技術を使ってwebシステムを開発しています。 jquery 1.3.2 php 5.2.6 Apatch 2.2.10 システムにファイルをアップロードしたいのですが出来ません。 JQueryの$.post()メソッドを使ってアクションを呼び出しているのですが phpの$_FILESが取得できません。 方法をご教授ください。 JQuery、phpともに初心者です。 不足している情報があれば教えてください。 ソースや設定は以下です。 //// upload.html ///////////////////////////////// <html> <head> <title>upload</title> <script type="text/javascript" src="./jquery-1.3.2.min.js" ></script> <script type="text/javascript"> function execPost() { var params = $('#testform').serialize(); $.post( 'http://localhost:8080/upload", params, function(data) { // post後処理 }); } </script> </head> </body> <form name="testform" id="testform" enctype="multipart/form-data" method="post" > <input type="hidden" name="MAX_FILE_SIZE" value="10000" /> <input type="file" name="file" /> <input type="button" name="post" onclick="execPost()" /> </form> </body> </html> //// upload.php ////////////////////////////////// <?php $filename = $_FILES['file']['name'] ?> //// php.ini ///////////////////////////////////// ;;;;;;;;;;;;;;;; ; File Uploads ; ;;;;;;;;;;;;;;;; ; Whether to allow HTTP file uploads. file_uploads = On ; Temporary directory for HTTP uploaded files (will use system default if not ; specified). ;upload_tmp_dir = upload_tmp_dir = "/tmp" ; Maximum allowed size for uploaded files. upload_max_filesize = 2M

  • ファイルのアップロード mysql

    現在PHPを使いファイルのアップロードをしようとしているのですが 途中でいきずまってしまいました。自分がしたいことですが フォームからファイル(画像:jpgのみ)をMYSQLにアップロードし、必要に応じてその画像を出力するということです。また画像のサイズも決めてそれ以上ならエラーを出すということです。こちらが今あるスクリプトになります。 途中まではなんとなく分かったのですがどうしても続きが分かりません。 ちなみにphp.iniの設定は色々調べたのであっていると思います。 またMYSQLのカラムはBLOBになっており、下記にinsert into~の文もあります。 form.php <form name="order" action="form.php" method="post" enctype="multipart/form-data"> <input name="MAX_FILE_SIZE" type="hidden" value="1000000" /> <input name="uploadfile" type="file" size="60" /> </form> <?php $uploadfile_name = $_FILES["uploadfile"]["name"]; $uploadfile_tmp_name = $_FILES["uploadfile"]["tmp_name"]; $uploadfile_size = $_FILES["uploadfile"]["size"]; if (strlen($uploadfile_name) > 0 ) { $fileinfo = pathinfo($uploadfile_name); $fileext = strtoupper($fileinfo["extension"]); $err_msg = ""; //ファイルのサイズチェック if ($uploadfile_size > 1000000 ) { $err_msg .= "テキストファイルが大きすぎます。1MB以下にして下さい。<br />"; } //ファイルの拡張子チェック elseif ($fileext != "jpg") { $err_msg .= ".jpg形式以外のファイルは登録できません。<br />"; } if( //どのようにしれMYSQLに保存するのかここら辺から分からなくなっています。 } } } $sql = "insert into ccc values('$upload_file')"; どなたかご存知の方おりましたらお伺い出来ませんでしょうか。 宜しくお願い致します。

    • 締切済み
    • PHP
  • POSTリクエストの投げ方

    ASP.NET(c sharp)、.netフレームワーク2.0環境です。 認証(ベーシック認証)付きのREST APIを使いたいのですが、 リクエストの投げ方が理解できず困っています。 URLを指定してリクエストを投げると動くものなのですが…。 使い方としては、 ・POSTリクエストを使用 ・"item"をキーにして、対象になるURLの配列を指定 とのことです。 { "item" : [ "http://www.yahoo.co.jp/test1.jpg", "http://www.google.co.jp/test2.jpg" ] } ↑サンプルとして載っていました 以下の通り作ってみましたが、うまく動きません。 URLの配列指定がうまく出来ていないのではないかと思うのですが、 方法を教えていただけないでしょうか。 宜しくお願いします。 //HttpWebRequestの作成 WebRequest webreq = WebRequest.Create("https://api.test.com"); webreq.Method = "POST"; //認証の設定 webreq.Credentials = new System.Net.NetworkCredential("test@test.com", "testpass"); //POSTするデータ string postData = "item=http://www.yahoo.co.jp/test1.jpg"; byte[] byteArray = Encoding.UTF8.GetBytes(postData); webreq.ContentType = "application/json"; webreq.ContentLength = byteArray.Length; Stream dataStream = webreq.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); WebResponse response = webreq.GetResponse(); dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); reader.Close(); dataStream.Close(); response.Close();

専門家に質問してみよう