- PR -

C#でファイルをPOSTでWebサーバーに送信

1
投稿者投稿内容
たけ
会議室デビュー日: 2005/06/25
投稿数: 3
投稿日時: 2005-06-25 12:15
初めて質問させていただきます。

早速なのですが、現在C#のクライアントアプリからサーバー(PHPで構築)に任意のファイルをアップロードする処理を作成しています。

やりたいことは、
「ファイルをPOSTでアップロードする際に識別子として任意のIDを一緒にPOSTで渡したい。」

ファイルのアップロード、POSTでデータを渡すということをそれぞれ単体で行う方法は調べてわかっているのですが、
ファイルのアップロードとPOSTでデータを送るという事を一度にする方法がわかりません。

どなたかご教授願います。

前川
常連さん
会議室デビュー日: 2004/04/27
投稿数: 38
お住まい・勤務地: 1DK
投稿日時: 2005-06-25 20:33
同じくPOSTで単体での扱いしか知らないので、その範囲で思いついた案をば。
POSTのパラメータでファイルのデータを、URLのクエリ文字列で識別子を、それぞれ埋め込んで渡すというのはどうでしょ。
その識別子が、(セキュリティ的に)危険性の無い物でないと使えないかもしれませんが。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-06-26 12:50
引用:

ファイルのアップロード、POSTでデータを渡すということをそれぞれ単体で行う方法は調べてわかっているのですが、



が出来ているなら、両者を的確に組み合わせれば出来るはずです。
具体的には、何が問題なんでしょうか?

「調べている=ソースコードを入手しただけ=内容の理解はしていない」ということなら、内容の理解からはじめることをお勧めします。

理解が出来ていないまま実装に取り組んでも、実行環境で不都合や障害が起きた場合に手も足も出なくなってしまことでしょう。

内容の理解を進める上で分からない点や疑問点があれば、検索エンジンで検索したり、掲示板でまた質問するなりしてみてください。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-06-26 13:50
どもです。がると申します。

引用:

やりたいことは、
「ファイルをPOSTでアップロードする際に識別子として任意のIDを一緒にPOSTで渡したい。」


との事なのですが。
普通のCGI requestと同様に、multipart/form-data でエンコードして
送信、でなにか問題とかありますでしょうか?

一応念のため。
「multipart/form-dataがわからない」場合、以下のURLを読むと
大体わかるかなぁと思います。
http://www.bekkoame.ne.jp/~poetlabo/WWW/rfc2388J.html
http://66.102.7.104/search?q=cache:YzMSSXQL_AMJ:www.studyinghttp.net/cgi-bin/rfc.cgi%3F2388+multipart/form-data&hl=ja&lr=lang_ja
http://www.kanzaki.com/docs/html/htminfo32.html
たけ
会議室デビュー日: 2005/06/25
投稿数: 3
投稿日時: 2005-06-27 08:55
レスが遅くなりまして大変申し訳ありません。


前川さん、渋木宏明(ひどり)さん、がるがるさん
ご教授ありがとうございました。

がるがるさんの教えてくださったサイトで「multipart/form-data」の仕組みを
理解する事で解決しました。

渋木宏明(ひどり)さんの
>「調べている=ソースコードを入手しただけ=内容の理解はしていない」ということなら、内容の理解からはじめることをお勧めします。

恥ずかしい話ですが、図星です。時間に追われついつい内容をよく理解しないまま行っていた為に...

お三方の助言を参考にもう一度、「multipart/form-data」の時はどういう仕組みでデータを渡しているかを勉強したら、やっと解決する事ができました。
仕組みを理解しないまま、プログラムを組んではいけないと改めて認識させられました。

皆様、ご協力ありがとうございました。
1

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