![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Perlで着メロをダウンロードさせカウントするスクリプトを書いたのですが、
J-PHONEでmmfファイルをダウンロードすると「REP310 J-PHONEではページを表示できません」というエラーが出てDLできません。
2000サーバーでIISのMIMEは既に登録済みです。
また、DoCoMoのmldは問題なくDLできカウントできます。
スクリプトはHTTP_USER_AGENTとホストで判定し、
J-PHONEの場合はHTTP_X_JPHONE_SMAFで和音数を調べて、
カウントしてからLocationでファイルの絶対パスへ飛ばしてます。
ちなみに、ケータイに直でパスを入れるとダウンロードできます。
No.8ベストアンサー
- 回答日時:
再度確認です。
-- ソース --
(カウント処理)
open(IN,"hoge.mmf");
binmode IN;
$src = join("",<IN>);
close(IN);
binmode STDOUT;
print "Content-Type: application/x-smaf\n\n";
print $src;
exit;
__END__
で、
拡張子に .mmf を付けてアクセスして NG でしょうか?
エラーコードも同じですか?
やりました。できました。
何が悪かったのかよくわかんなかったんですが、
とりあえず、間に合ったのでこれから調べます。
ご回答くださいました皆さん有難うございました。
No.5
- 回答日時:
度々申し訳ありません。
最初の質問に IIS と書いてありましたね・・・
HTTPD に MIME を登録しても CGI で出力するヘッダは明示的にしてあげないとダメですよ。
この回答への補足
こちらこそ度々すいません。
そうなんです。IISです。
デーモンにもMIMEを登録して、CGIでヘッダを出力してもやっぱりできないです。
No.4
- 回答日時:
すみません、自己レスです。
> バイナリファイルなので open した時に join でくっつけているのですが。
これ、よく意味が解りませんね。
とりあえずバイナリファイルは改行は改行として扱わないフォーマットですので join("", <IN> ); としてデータを一つの変数内に代入してるだけです。
配列をまんま出力して問題なければそれでいいと思います。
binmode を使ってるという事は Windows なんでしょうか?
試してみよう・・・
No.3
- 回答日時:
mmfファイルのヘッダは
Content-Type: application/x-smaf
だと思うのですが・・・
それと、配列ってまんま出力していいんでしたっけ?
バイナリファイルなので open した時に join でくっつけているのですが。
FreeBSD 4.4-RELEASE と Apache 1.3.27 の環境では問題なく動作してますよ。No.2 のソースで。
この回答への補足
ありがとうございます。
ソースをコピペしてファイルへのパス等変更して吐き出してみたんですけど、
やっぱりREP310のエラーメッセージです。
先程のソースでヘッダを変更してみてもやっぱりDLできませんでした。
No.2
- 回答日時:
そのCGIで直接mmfファイルを出力してはどうでしょう?
(カウント処理)
open(IN,"hoge.mmf");
$src = join('',<IN>);
close(IN);
print "Content-Type: application/x-smaf\n\n";
print $src;
exit;
ダメですか?
この回答への補足
open ML,$J_file;
binmode ML;
my @tmp = <ML>;
close ML;
binmode STDOUT;
print "Content-disposition:attachment; filename=\"$J_file\"\n";
print "Content-type: application/octet-stream\n\n";
print @tmp;
として直接ファイルを吐かせてみたんですがうまくいきません。
回答ありがとうございます。
open ML,$J_file;
binmode ML;
my @tmp = <ML>;
close ML;
binmode STDOUT;
print "Content-disposition:attachment; filename=\"$J_file\"\n";
print "Content-type: application/octet-stream\n\n";
print @tmp;
としてみたんですが、どうにもできないんですよね。
なんなんでしょうか?
No.1
- 回答日時:
J-PHONEはLocationに制限があるようです。
ちょっと探せなかったですが、J-PHONEのサイトに
仕様が載っているかもしれません。
参考URL:http://ponta.kit.to/doc/develop/
この回答への補足
J-PHONEの参考資料(PDFファイル)を読んだのですが、ここにはLocation等ヘッダに関するものやPerlなどプログラム関連の記述はありませんでした。
補足日時:2003/04/25 22:30ご回答有難うございます。
参考サイトを見させて頂きました。
やっぱりLocation周りですか。
このヘッダを流してるのは一度なのですがその辺りももう少し調べてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
awkスクリプトでダブルクォーテ...
-
ExcelをCSV書き出す場合のシー...
-
エクセルVBAでCSVファイ...
-
batファイルでrenameができませ...
-
Perl cgiの文字化けを直したい ...
-
【エクセル】改行無しテキスト...
-
ディレクトリの判別
-
window.open でのファイル指定方法
-
拡張子 ”log” と ” dat” の違い
-
fopenでディレクトリ内の全ファ...
-
cgiでサーバーにファイルを追加...
-
エクセルVBA コードが同じでも...
-
htaccessで特定のディレクトリ...
-
VBAでCSVファイルを途中行まで...
-
全角と半角文字が混在している...
-
Windowsで複数のファイルを同じ...
-
perl で作成された文書と知るに...
-
CSVファイルについて
-
openした後、closeしないでプロ...
-
重複ファイル名ある場合ファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
awkスクリプトでダブルクォーテ...
-
エクセルVBAで素数だけを出力す...
-
DOSコマンドで、標準出力を出力...
-
sprintfについて
-
教えて!perlから.exeファイル...
-
重複するデータを抽出できる秀...
-
Perl<->Oracle間での文字化けに...
-
ファイル出力の改行コードをLFに
-
[Perl]ファイル出力のエンコー...
-
sprintfで10進数を桁数指定で16...
-
LISPによる横型探索
-
テキストファイルから日本語部...
-
コマンドプロンプトで行が見え...
-
バッチファイルで、記号を含む...
-
文字コードの変換(Shift-JISか...
-
Perlでエラーログに日時をつける
-
ドメインからIPアドレスあるい...
-
Perlからsyslog経由でログを出...
-
自動更新
-
機器のI/OをArduinoでSDに記録...
おすすめ情報