[PHP-users 2609] Re: fsockopen() でマルチパート
岡本 晃一
php-users@php.gr.jp
Wed, 10 Oct 2001 02:24:13 +0900
こんばんは、岡本です。
SMTPがおかしくって、自分でHP上にWEBメーラーを作り置きしたスクリプトで投稿し
たのですが、
その後SMTPが復活。複数投稿となってしまいました・・・申し訳ありません。
ところで、マルチパートの件ですが、実はMySQLにBLOBで保存した画像データを直接
ヘッダに乗せて
サーバーに渡そうとしているんですが、画像のデータの終わりのところで改行コード
が誤認識されているようなのです。
---
$images = tep_db_query("SELECT * FROM images WHERE image_id= '" .
$HTTP_GET_VARS['image_id'] . "'");
$images_values = tep_db_fetch_array($images);
$request = "-----------------------------7d112c38800\n";
$request .= "Content-Disposition: form-data; name=\"upfile\";
filename=\"D:\My Pictures\a.gif\"\n";
$request .= "Content-Type: " . $images_values['image_type'] . "\n\n";
$request .= $images_values['image_data'];
$request .= "-----------------------------7d112c38800\n";
$header = "POST /image HTTP/1.1 \n";
$header .= "Content-type: multipart/form-data;
boundary=---------------------------7d112c38800";
$fp = fsockopen(kaigono.net, 80, &$err_num, &$err_msg, 30);
if ($fp)
{
fputs($fp, $header . $request);
while (!feof($fp))
$response .= fgets($fp, 10240);
}
---
文字コードは送信・受信ともにEUC-JPです。
ちなみに普通にHTML表示するときは以下のスクリプトで表示できます。
<?
$images = tep_db_query("SELECT * FROM images WHERE image_id= '" .
$HTTP_GET_VARS['image_id'] . "'");
WHILE ($row = tep_db_fetch_array($images))
{
$image_type = $row['image_type'];
$image_data = $row['image_data'];
}
header('Content-type: ' . $image_type);
print $image_data;
exit();
?>
---
岡本 / info@kaigono.net
FreeBSD 4.4R + Apache1.3.20 + PHP 4.0.6 with MySQL