過去ログを探してみて似たような物があり試してみましたが
だめだったので此方で質問させて下さい。
文才が無いためうまく説明が出来かねますが解読できましたら
助言等頂ければと思います。
それでは本題です。
Linux上よりHTTP通信にて、POST処理でファイルアップロードを行うのですが
送信先のphpがうまくファイルを吐いてくれません。
phpが悪いのでは?と言った簡単な答えに行き着くと思うのですが
VBのSystem.Net.WebClient.UploadFile(Url, FilePath)で処理を行うと
ファイルはうまく吐けるようです。
※クライアント側とサーバー側との担当者が違います。
※FTPポートはセキュリティーのため塞いで降ります。
もしVBのUploadFileに似たような処理がC言語だけで可能でしょうか?
※HTTP通信のGET処理は正常に動作できております。
言葉足らずとは思いますが何かご存知の方がいらっしゃれば教えて下さい。
HTTP通信のPOSTについて
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: HTTP通信のPOSTについて
私はやったことが無いですが、POSTでファイルアップロードする場合multipart/form-dataを実装する必要があるはずです。
http://www.studyinghttp.net/body#Form-data
これは適切に行われていますか?
http://www.studyinghttp.net/body#Form-data
これは適切に行われていますか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
Mr.D
Re: HTTP通信のPOSTについて
早速のご返信ありがとうございます。
>POSTでファイルアップロードする場合multipart/form-dataを実装する必要があるはずです。
>http://www.studyinghttp.net/body#Form-data
>これは適切に行われていますか?
一応コードの大まかな流れを下記に記載いたします。
1、socketを作成
2、connectにてサーバーに接続(*****/****.php)
3、HTTPプロトコル生成(サーバへ送信)
POST (接続先url) HTTP/1.0\r\n
Content-Length: (ファイルサイズ)\r\n
Content-Type: multipart/form-data;
Content-Disposition: form-data;filename=/test.txt\r\n
Content-Type: text/plain\r\n
\r\n
4、GETならここでreadでしょうが、POSTなら何をsendするんだろう?(疑問)
5、close処理
を行っております。
3が悪いのか、それとも4でやはり何かsend(もしくはwrite?)を
しないといけないのかが解らないところです。
>POSTでファイルアップロードする場合multipart/form-dataを実装する必要があるはずです。
>http://www.studyinghttp.net/body#Form-data
>これは適切に行われていますか?
一応コードの大まかな流れを下記に記載いたします。
1、socketを作成
2、connectにてサーバーに接続(*****/****.php)
3、HTTPプロトコル生成(サーバへ送信)
POST (接続先url) HTTP/1.0\r\n
Content-Length: (ファイルサイズ)\r\n
Content-Type: multipart/form-data;
Content-Disposition: form-data;filename=/test.txt\r\n
Content-Type: text/plain\r\n
\r\n
4、GETならここでreadでしょうが、POSTなら何をsendするんだろう?(疑問)
5、close処理
を行っております。
3が悪いのか、それとも4でやはり何かsend(もしくはwrite?)を
しないといけないのかが解らないところです。
Re: HTTP通信のPOSTについて
http://d.hatena.ne.jp/ryousanngata/20120505/1336277843
ここにファイルをアップロードするときのHTTPリクエストの例が載っています
ここにファイルをアップロードするときのHTTPリクエストの例が載っています
boundaryでファイルの境界を指定して、「Hello World」の部分に実際のファイルの内容が入るみたいですね。POST /upload HTTP/1.1 TE: deflate,gzip;q=0.3 Connection: TE, close Host: 192.168.11.254 User-Agent: libwww-perl/5.837 Content-Length: 134 Content-Type: multipart/form-data; boundary=xYzZY --xYzZY Content-Disposition: form-data; name="file"; filename="/tmp/test.txt" Content-Type: text/plain Hello World --xYzZY--
-
Mr.D
Re: HTTP通信のPOSTについて
>h2so5さん
参照ページ拝見させて頂きました。
それに伴って何度も動作テストを行ってみましたが結果は同じ。だめでした。
恐らく、此方側とサーバー側(php)は個々では問題ないと思われるのですが、
此方が想定しているPOST送信処理とサーバー側(動作テストVB)とのPOST送受処理が
不一致のため正常に動作していないのではないか?という結論に行き着きました。
サーバー側の受信ログを見せてもらい(私からは見れない)その辺をもう少し突き詰めて見ます。
参照ページ拝見させて頂きました。
それに伴って何度も動作テストを行ってみましたが結果は同じ。だめでした。
恐らく、此方側とサーバー側(php)は個々では問題ないと思われるのですが、
此方が想定しているPOST送信処理とサーバー側(動作テストVB)とのPOST送受処理が
不一致のため正常に動作していないのではないか?という結論に行き着きました。
サーバー側の受信ログを見せてもらい(私からは見れない)その辺をもう少し突き詰めて見ます。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: HTTP通信のPOSTについて
wireSharkなどのパケットキャプチャでパケットをキャプチャして送信のパケットをVB版と比べてみれば分かる気がするんですが試されていないのでしょうか?Mr.D さんが書きました:>h2so5さん
参照ページ拝見させて頂きました。
それに伴って何度も動作テストを行ってみましたが結果は同じ。だめでした。
恐らく、此方側とサーバー側(php)は個々では問題ないと思われるのですが、
此方が想定しているPOST送信処理とサーバー側(動作テストVB)とのPOST送受処理が
不一致のため正常に動作していないのではないか?という結論に行き着きました。
サーバー側の受信ログを見せてもらい(私からは見れない)その辺をもう少し突き詰めて見ます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。