読者です 読者をやめる 読者になる 読者になる

携帯で画像を保存する際のファイル名を指定する

プログラミング

画像を動的に生成した上で、ユーザーが携帯ブラウザメニューの「画像を保存する」をした際のファイル名を、こちらから指定することができるか?
できるのであれば、日本語のファイル名は可能か?


調べた結果。

  • ファイル名の指定は(機種によっては)可能
  • 日本語のファイル名は不可

ファイル名の指定

ファイル名の指定はHTTPヘッダの「Content-Disposition」で指定可能。

<?php
$filename = "abc.gif";
header("Content-type: image/gif");
header("Content-Disposition: attachment; filename={$filename}");
print file_get_contents("sample.gif");
?>


ただし、「Content-Disposition」は非標準のヘッダで、ブラウザによって挙動が異なる。
PCのブラウザ(IEやFireFox)でも対応が統一されてないので、携帯のブラウザなんて、どうなるか分かったもんじゃない。
F-01A(ドコモ)でみたところ、アルファベットのファイル名は指定可能だったが、他の機種やキャリアではどうだろうね。


「Content-Disposition」については、こちらを参照


その他の参照サイト。

日本語のファイル名

いままであまり意識しなかったが、そもそも携帯では日本語のファイル名は扱えないっぽいね。全機種かはわからないけど、ドコモの数機種は不可だった。
普段、携帯でとった画像をリネームする際に日本語が使えるので、日本語ファイル名が使えるものと勘違いしてけど、日本語に変更できるのは「タイトル」「表示名」的なものだけで、ファイル名自体は英数字のみのものが保たれる。
F-01AやN905iでみたところ、日本語にした画像の「タイトル」はexifなど画像自体に入っているわけではなかったので、ただ単に携帯のOS的に「タイトル」を紐づけて別持ちしているだけのようだ。