アプリ版:「スタンプのみでお礼する」機能のリリースについて

Perlで着メロをダウンロードさせカウントするスクリプトを書いたのですが、
J-PHONEでmmfファイルをダウンロードすると「REP310 J-PHONEではページを表示できません」というエラーが出てDLできません。
2000サーバーでIISのMIMEは既に登録済みです。
また、DoCoMoのmldは問題なくDLできカウントできます。

スクリプトはHTTP_USER_AGENTとホストで判定し、
J-PHONEの場合はHTTP_X_JPHONE_SMAFで和音数を調べて、
カウントしてからLocationでファイルの絶対パスへ飛ばしてます。
ちなみに、ケータイに直でパスを入れるとダウンロードできます。

A 回答 (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 でしょうか?
エラーコードも同じですか?
    • good
    • 0
この回答へのお礼

やりました。できました。
何が悪かったのかよくわかんなかったんですが、
とりあえず、間に合ったのでこれから調べます。
ご回答くださいました皆さん有難うございました。

お礼日時:2003/04/28 21:29

あ、すみません。


肝心な事を忘れていました。

J-SKY って MIME だけでなく拡張子も見るんですよ。
その CGI のお尻に .mmf を付けてみてください。
例えば、

~/mero.cgi?mefo.mmf
~/mero.cgi/mero.mmf

みたいな感じです。
これ、何回ハマっても忘れてしまう... X-(

この回答への補足

ダミー拡張子ですね。
png画像とかもそうですよね。
それも試したんですが、どうにも動いてくれません…

補足日時:2003/04/28 19:44
    • good
    • 0

> ソースをコピペ



あー、Windows でしたら binmode の記述は必要ですよ。
それで再度試して頂けませんか?

この回答への補足

binmodeにした場合も試してましたがやっぱり変わらなかったです。

補足日時:2003/04/28 18:50
    • good
    • 0

度々申し訳ありません。



最初の質問に IIS と書いてありましたね・・・
HTTPD に MIME を登録しても CGI で出力するヘッダは明示的にしてあげないとダメですよ。

この回答への補足

こちらこそ度々すいません。
そうなんです。IISです。
デーモンにもMIMEを登録して、CGIでヘッダを出力してもやっぱりできないです。

補足日時:2003/04/28 18:38
    • good
    • 0

すみません、自己レスです。



> バイナリファイルなので open した時に join でくっつけているのですが。

これ、よく意味が解りませんね。
とりあえずバイナリファイルは改行は改行として扱わないフォーマットですので join("", <IN> ); としてデータを一つの変数内に代入してるだけです。
配列をまんま出力して問題なければそれでいいと思います。
binmode を使ってるという事は Windows なんでしょうか?

試してみよう・・・
    • good
    • 0

mmfファイルのヘッダは



Content-Type: application/x-smaf

だと思うのですが・・・
それと、配列ってまんま出力していいんでしたっけ?
バイナリファイルなので open した時に join でくっつけているのですが。

FreeBSD 4.4-RELEASE と Apache 1.3.27 の環境では問題なく動作してますよ。No.2 のソースで。

この回答への補足

ありがとうございます。
ソースをコピペしてファイルへのパス等変更して吐き出してみたんですけど、
やっぱりREP310のエラーメッセージです。
先程のソースでヘッダを変更してみてもやっぱりDLできませんでした。

補足日時:2003/04/28 18:29
    • good
    • 0

その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;
として直接ファイルを吐かせてみたんですがうまくいきません。

補足日時:2003/04/28 17:07
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
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;
としてみたんですが、どうにもできないんですよね。
なんなんでしょうか?

お礼日時:2003/04/28 17:10

J-PHONEはLocationに制限があるようです。


ちょっと探せなかったですが、J-PHONEのサイトに
仕様が載っているかもしれません。

参考URL:http://ponta.kit.to/doc/develop/

この回答への補足

J-PHONEの参考資料(PDFファイル)を読んだのですが、ここにはLocation等ヘッダに関するものやPerlなどプログラム関連の記述はありませんでした。

補足日時:2003/04/25 22:30
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
参考サイトを見させて頂きました。
やっぱりLocation周りですか。
このヘッダを流してるのは一度なのですがその辺りももう少し調べてみます。

お礼日時:2003/04/25 20:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!