docomo L-06C(Optimus Pad)とPHPで質問です。


index.php上にダウンロードページを表示させ、ユーザーがクリックしたらAndroidアプリをダウンロードできる仕組みを構築したいと考えています。
しかしながら、以下のようなコードで他のAndroidではアプリがダウンロードできるのに、L-06Cからはダウンロードしたファイルが壊れていて、インストールできない症状が発生して困っています。

//ダウンロード部分
header('Content-Type: application/vnd.android.package-archive');
header('Content-Disposition: attachment; filename="hogehoge.apk"');
header('Content-Transfer-Encoding', 'binary');
header('Content-Length: '.filesize('temp/hogehoge.apk'));
readfile("temp/hogehoge.apk");

ダウンロードしたファイルサイズはオリジナルと同等っぽいのですが、開けると「解析エラー:パッケージの解析中に問題が発生しました。」エラーが発生します。
どうもバイナリエディタで開くと、頭に「EF BB BF」という不正なバイトが付けられたのが原因のようなのですが、なぜ付けられたのかがわかりません。

よろしくお願いします。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2011/04/04 22:02:51
  • 終了:2011/04/11 22:05:02

回答(1件)

id:tasklight No.1

tasklight回答回数323ベストアンサー獲得回数402011/04/05 17:12:08

ポイント60pt

下記の行を省いてみて下さい。

header('Content-Transfer-Encoding', 'binary');
id:halohalolin

tasklightさんありがとうございます。

 

早速試してみます!

・・・といいたいのですが、都合により手元からL-06Cがなくなってしまったので

結果が出せなくなってしまいましたorz

 

**

 

余談ですが、EF BB BF ってUTF-8のヘッダなんですね。

http://ja.wikipedia.org/wiki/UTF-8

 

あと私の中で混乱している点として

readfile("temp/hogehoge.apk"); と指定しているにもかかわらず

temp/hogehoge.apkに置いたままだと、ファイルサイズがありえないほど小さくなります。

 

一方、hogehoge.apkを先のPHPコードが記載されているファイルと同じフォルダにおくと

EF BB BFという不正なバイトこそつけられますが、同サイズでダウンロードできるようになると

いうのも釈然としない点です。

2011/04/05 18:48:25

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません