HTTP_RequestでPOSTするには - PHPプロ!Q&A掲示板
キーワード / PEAR   HTTP_Request   POST  
今回初めてPEARを使用しています。HTTP_Requestを使用して、自動でPOSTするプログラムを作成中です。
下記フォームの内容を自動でPOSTしたいと考えています。
- <form action="./hoge.php" method="POST" enctype="multipart/form-data">
- <div>
- <div>名前 <input type="text" name="name"></div>
- <div>コメント <textarea cols="50" rows="6" name="cmt"></textarea></div>
- <div>画像 <input type="file" name="pic"></div>
- <div><input type="submit" value="送る"></div>
- </div>
- </form>
上記フォームを自動で送信するためのプログラムです。
- ini_set('include_path','/usr/***/***/***/public_html/PEAR/'. PATH_SEPARATOR . ini_get('include_path') );
- require_once "HTTP/Request.php";
- $post_url = "./hoge.php";
- // POST パラメータ
- $post_data = array(
- "name" => "名前",
- "cmt" => "コメント",
- );
- // アップロードパラメータ
- $pic = array(
- "name" => "file",
- "path" => "C:\uploadtest\hogehoge.jpg",
- );
- // アップロード
- $rs = http_send($post_url, $post_data, $pic);
- function http_send($url, $params, $pic=null) {
- $req = new HTTP_Request();
- $req->setMethod(HTTP_REQUEST_METHOD_POST);
- foreach ($params as $key => $val) {
- $req->addPostData($key, $val);
- }
- $req->setURL($url);
- if ($pic) {
- $res = $req->addFile($pic["name"], $pic["path"]);
- if (PEAR::isError($res)) {
- echo $res->getMessage();
- exit;
- }
- }
- if (!PEAR::isError($req->sendRequest())) {
- return $req->getResponseBody();
- } else {
- return false;
- }
- }
上記プログラムでは、33行目のgetMessage()で
File 'C:\uploadtest\hogehoge.jpg' is not readable
と返ってきます。
34行目のexitを消すとテキストデータ($post_data)は送ることができるのですが、画像($pic)を送ることができません。
上記フォームから送信すると、受信側phpは正常に動作しますので、問題は送信側かと思います。
お分かりになる方いらっしゃいましたら、よろしくお願いします。
[補足]
なお、HTTP_Clientでの類似質問がありましたので試してみましたが、そちらもテキストは送れましたが、画像は送れませんでした。
この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。





ページのトップへ


一つの目安として、ECサイトの購入情報など絶対に消えてはいけないものはDBに、カートなどの一時的に使用する情報や、ユーザに任意のタイミングで消去されても構わないものはセッションにと使い分けるといいでしょう。