ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

ド素人でも問題ないPHPサークルコミュのPHPでのファイルPOSTの方法

  • mixiチェック
  • このエントリーをはてなブックマークに追加
お世話になっております。
また分からないので利用させてもらいます。
現在、HTMLのフォームから送信する様に、phpファイルを叩いたら
指定アドレスをにPOSTさせています。

分からない点はファイルのアップロードという点になります。
具体的には、テキストファイル、CSVファイルなどファイルを、
フォームでいうところのupfile指定したいです。

$data = http_build_query(array( 〜 でecho $_POST["XXX"]. を設定し、
$context = stream_context_create($options);
$optionsは、
'method' => 'POST',
'header' => "Content-type: application/x-www-form-urlencoded\r\n"
. "User-Agent: php.file_get_contents\r\n" //
. "Content-Length: " . strlen($data) . "\r\n",
'content' => $data
という感じでデータを入れ込んで
$response = file_get_contents($url, false, $context); 
という形でPOSTさせています。
参照したサイト:http://www.programming-magic.com/20080226023511/

【追記】外部サイトで、php://inputという形式が使えないようなので、
単純にhttp://で行きたいと思います。

ファイルをアップロードするにはどういう指定がいいのでしょうか?
また画像・圧縮ファイルまで追記していただくと感謝です。



コメント(6)

お、pontaさん、どうも
PEARは使わない方向で考えてます。

リクエストヘッダ把握、上記解析してみるです。
そもそも今まで添付ファイル自体理解して無かった模様。
早速チャレンジ中
コメント感謝

>というコメントを見る限り、外部サイトも黄昏ドライブさんの管理化ですか???

いや、手元発射の送信元は管理サーバーだけど、
受け取る側は全くの外部サービス
こちらでIDやらPASS、そしてリストCSVをPOSTさせるという状況。


解決しました。
やはりヘッダー・・・
ブログに詳細を書きます。
えぇ・・書きますとも。

感謝。
一応、適度に理解したので、
こちらに解決的な物を書いておきますね。
最短で行うとしたら、
1.ponta氏が書いたように生のHTTPリクエストを確認。
 FirefoxのLive HTTP Headers あたりが楽。
2.出てきたHTTPリクエストを
 stream_context_create関数とfile_get_contents関数でPOSTメソッドに。

サンプルコードはこちら
----------------------------------------------------------

$sendurl = "(´・ω・)"; //POST先
$data = "";
$boundary = "---------------------".substr(md5(rand(0,32000)), 0, 10);
$postdata['login_id'] ="値";
$postdata['password'] ="値";

foreach($postdata as $key => $val) {
$data .= "--$boundary\n";
$data .= "Content-Disposition: form-data; name=\"".$key."\"\n\n".$val."\n";
}
$data .= "--$boundary\n";
$files['upfile'] = "アップロードする値"; //画像でもCSVでも
foreach($files as $key => $file) {
$fileContents = file_get_contents($file);
$data .= "Content-Disposition: form-data; name=\"{$key}\"; filename=\"{$file}\"\n";
$data .= "Content-Type: image/jpeg\n";
$data .= "Content-Transfer-Encoding: binary\n\n";
$data .= $fileContents."\n";
$data .= "--$boundary--\n";
}

$params = array('http' => array(
'method' => 'POST',
'header' => 'Content-Type: multipart/form-data; boundary='.$boundary,
'content' => $data
));

$context = stream_context_create($params);
//送信する
$contents = "";
$contents = file_get_contents($sendurl, false, $context);
----------------------------------------------------------------------
もっと綺麗に育成はできると思うが、以上で( ; ̄ω ̄)ゞ

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

ド素人でも問題ないPHPサークル 更新情報

ド素人でも問題ないPHPサークルのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング