スレッド表示 | フラット表示〕 全トピック 920 件中 784 番目 次≫ ≪前

base64_decode()について

created: 2003-10-14 15:59 | modified: 2003-10-14 19:17 | reply: 3

[766] base64_decode()について

user: DP | created: 2003-10-14 15:59
はじめまして
while($buf != "\n" && $buf != "\r\n"){
$temp[$cnt] = $temp[$cnt].$buf;
$buf = fgets($fp, 1024);
}

for($i=0; $i<$cnt; $i++){
$temp2 = base64_decode($temp[$i]);
$tfp = fopen("/tmp/$fn/$tmp_name","wb");
fwrite($tfp,$temp2);
fclose($tfp);
}
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
こんな感じでメールの添付ファイルをデコードして保存する処理をしたいのですが、
画像ファイルの場合うまく変換できていないのか、ループの終了条件が悪いのか、
処理が終了せずTimeOutになってしまいます。
この場合はどうしたらよいのでしょうか?
ちなみに画像ファイル以外は正常に動きます
よろしくお願いします
reply: 769 返信 編集 削除

[769] メールのデコード

user: ゆうじ | created: 2003-10-14 18:40
こんにちは。
やったことないのですが気づいたことを1つ2つ。

>ちなみに画像ファイル以外は正常に動きます

これは、テキストは勿論のこと、
画像以外のバイナリーファイルでも正常に動作するのでしょうか?

メールに添付されたファイルは、
base64 でエンコードされているだけでなく、
RFC のルールに基づいて、
72バイト(76だったかな?)毎に改行コードが挿入され
整形がなされているはずです。
fgets() で読み込んだらまず、
行末の改行コードを取りのぞかねばならないと思うのですが。


あと、
$buf、$temp、$cnt などの変数は予め初期化されていますか。
初期化されて無い変数ほど、恐ろしいものはありません。
Parent: 766  reply: 770 返信 編集 削除

[770] 一つ質問があります

user: DP | created: 2003-10-14 19:01
ゆうじさんレスどうもです。
まずバイナリファイルに関して、lzh等のファイルは正しく動いています。
次に改行位置ですが私の見たRFCには1024バイトごとに改行と書いてあった気がしました。
RFCの何番か知っていますでしょうか?
最後に変数の初期化ですが$bufの初期化が抜けてました。初期化してテストしてみます
Parent: 769  reply: 771 返信 編集 削除

[771] 76文字でしたね。

user: ゆうじ | created: 2003-10-14 19:17
> RFCの何番か知っていますでしょうか?

私もひさしぶりに見ました。
この中に76文字とありました。
RFC-2045
http://www.asahi-net.or.jp/~bd9y-ktu/dtd_f/rfc_f/rfc2045j.html#s.68


追記:
改行コードの問題は別にして、
他のバイナリファイルでタイムアウトにならないのならば、
ファイルサイズが大きすぎて、
タイムアウトになるほど時間のかかる処理なのかも。
例えタイムアウトの場合でも、
添付ファイルは保存できてたりしませんか。
Parent: 770  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 784 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑