• ベストアンサー

日本語ファイルのリネームと保存

ファイルアップデートで日本語ファイル名をリネームしてデータベースで対応付けて保存するプログラムを作成しました、そのファイルをリンクしてダウンロードする場合に元の日本語ファイル名で自動的にリネームしてPC側で保存する方法はないでしょうか。 例えば「あああ.txt」を「a.txt」にリネームして <a href="a.txt">あああ.txt</a> という風にしています、これをクリックするとa.txtになってしまいますが、あああ.txtで表示・保存するようにしたいのですが、何かうまい方法はないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

こんな感じでどうでしょう? <? $f=$_REQUEST["f"]; $rename=Array("aaa.txt"=>"あああ.txt","bbb.txt"=>"びびび.txt"); if(!empty($f)){ if(empty($rename[$f])){ print "unknown file."; exit; }elseif(!file_exists($f)){ print "not found."; exit; }else{ header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"{$rename[$f]}\""); readfile($f); } }else{ print <<<eof <a href="{$_SERVER["PHP_SELF"]}?f=aaa.txt">あああ.txt</a> <a href="{$_SERVER["PHP_SELF"]}?f=bbb.txt">びびび.txt</a> eof; } ?>

kabuto962
質問者

お礼

ソースコードまで書いていただき親切にありがとうございました、おかげさまで思い通りの動作ができるようになりました。

その他の回答 (1)

回答No.1

header("Content-disposition: attachment;filename=[ファイル名]"); 上記のHTTPヘッダを出力することでダウンロードして保存する際のファイル名を指定することができます。使用する際は[ファイル名]の部分を目的のファイル名に置き換えて使用してください。

参考URL:
http://jp.php.net/manual/ja/function.header.php

関連するQ&A