- PR -

クライアントアプリからのPOSTデータ(バイナリデータ)の受け取り方

1
投稿者投稿内容
wiz
会議室デビュー日: 2005/06/16
投稿数: 14
投稿日時: 2005-06-21 16:10
クライアントアプリ(delphiで作成)からサーバーにPOSTした際に
クライアントにあるファイルもPOSTデータ(バイナリデータ)の一部としてに送り、サーバー側でそのPOSTデータを受け取りその中からバイナリーデータを読み取り、ファイルとして作成するという処理を行いたいのですが、ASP.NET(VB.NET)で可能でしょうか?


以前C言語でmultipart/form-dataの要求を受け取り、その受け取ったデータの中からバウンダリー文字で囲まれたデータ箇所を取得してファイルに保存するというようなものを作ったので、そのイメージで出来れば(もっと簡単に出来るのかも知れませんが)
同じような事は出来るのでしょうか?

fileuplodとしてサーバー側で設定したフォルダにファイルが作成されるのではなくPOSTデータとして受け取り、それを自分でファイルとして保存したいのです(クライアントからのファイルの取得としては正しい方法ではないのかも知れませんが)

どなたかご存知のかたがいらっしゃいましたら教えて頂けないでしょうか?
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2005-06-21 17:01
試していませんが、
HttpRequest.Filesプロパティでいけそうじゃないですかね。

HttpRequestのインスタンスは、PageのRequestプロパティで取得できます。
Moo
大ベテラン
会議室デビュー日: 2004/04/12
投稿数: 118
お住まい・勤務地: 地球・港
投稿日時: 2005-06-21 17:09
こんにちは。

以下の技術情報が参考になるかもしれません。
323245 Visual Basic .NET を使用して ASP.NET の Web サーバーにファイルをアップロードする方法
http://support.microsoft.com/default.aspx?scid=kb;ja;323245

_________________
ASP/ASP.NETだいすき。 ASP++ by Moo http://moo-asp.net/
日記は ほぼ毎日更新中 http://d.hatena.ne.jp/aspx/
wiz
会議室デビュー日: 2005/06/16
投稿数: 14
投稿日時: 2005-06-21 19:25
一郎さん、Mooさん 情報ありがとうございます。

一郎さん>
>HttpRequest.Filesプロパティでいけそうじゃないですかね。
>HttpRequestのインスタンスは、PageのRequestプロパティで取得できます。

済みません、具体的にはどうやって取得するのでしょうか?
テストとして
クライアントアプリではなく(まだ完成していないので)
テスト用のhtmlを作成してその中にfileuploadのタグを書いて
action先をaspxにしたところ


Dim hprq As HttpRequest = Page.Request
Response.Write(Rq.Files)

「C:\****\****.txt.Web.HttpFileCollection」と表示されました。

****の部分はHTMLのfileタグで指定したファイルのパスとファイル名です。
ファイルの中身を取得するにはここからどうすればいいのでしょうか・・・

Mooさん>
教えていただいたリンク先を見たのですが、

「File1.PostedFile.SaveAs(SaveLocation)」この
File1というのはfileタグをWebフォームで作成した際に使用できそうな記述に感じましたが、クライアントアプリからのPOSTのフォームの場合でも使用できるのでしょうか?

質問の仕方がおかしいかも知れませんが
何か情報があれば教えていただければと思います。







h
会議室デビュー日: 2005/06/21
投稿数: 1
投稿日時: 2005-06-21 22:03
使い方がわからないときはリファレンスを見ましょう。

HttpRequest.FilesプロパティはHttpFileCollection という
アップロードされたファイルのコレクションを取得します。
個々のファイルは、ItemプロパティでHttpPostedFile
というものが取得できます。そのクラスのHttpPostedFile.InputStream
プロパティがファイルの内容を取得するためのStreamになってます。
wiz
会議室デビュー日: 2005/06/16
投稿数: 14
投稿日時: 2005-06-22 11:34
hさん 情報ありがとうございます。
InputStreamを使用して読み込むところまではまだ出来ていませんが、
とりあえずuploadされてきたファイル自体を取得する事が出来ました

Dim Rq As HttpRequest = Page.Request
Dim upfile As HttpPostedFile = Rq.Files.Item(0) 
  ※Rq.Files.Item()にstringを渡す方法では、何の文字列を渡してよいのか
  分かりませんでしたが 
upfile.SaveAs("C:\Inetpub\wwwroot\test\data\NNN.TXT")

ありがとうございました。
1

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