ファイルダウンロードの文字化け
created: 2008-04-23 16:30 | modified: 2008-04-24 10:47 | reply: 4
[4146] ファイルダウンロードの文字化け - たか - 2008-04-23 16:30- [4147] ダウンロード時にファイル名の文字化け - ゆうじ - 2008-04-23 18:45
- [4148] ありがとう御座います - たか - 2008-04-23 19:34
- [4149] ダウンロードのサンプルコード - ゆうじ - 2008-04-24 01:26
- [4150] 報告です - たか - 2008-04-24 10:47
[4146] ファイルダウンロードの文字化け
user: たか | created: 2008-04-23 16:30
たかと申します
phpにてファイルのアップローダーを作成しました。
簡単な仕様としては
1.ユーザがファイルをアップロードする
2.受け取りの担当者へダウンロードページのリンク付きのメールが届く
3.受取り担当者はリンクからダウンロードページへ行く
4.ダウンロードボタンを押すとファイルのダウンロードを実行する。
3までは問題なく動作するのですが、4で不具合があります。
win,MacのIEでは文字化けなくダウンロード出来るが、Mac safariの場合
ダウンロードしたファイル名が文字化けしている。
(日本語以外は正しく表示されます)
解決策を見出せずにいます・・・
ご教授頂けないでしょうか
【サーバ環境】
FreeBSD6.2
php5
【クライアントテスト環境】
winXP SP2 IE6
Mac OS X safari 1.3.2
ダウンロードスクリプト
(ダウンロードボタンを押した際に動くスクリプト)
$dlname,$dltype,$dlsizeはダウンロードリンクのアドレスに情報を持たせてあります
-------------------------------
<?
header("Content-Type: text/html; charset=EUC-JP");
$dlpath = "./data/";
$dlname = $_GET{'fn'};
$dlpathname = "$dlpath$dlname";
$dltype = $_GET{'ft'};
$dlsize = $_GET{'fs'};
$covname = mb_convert_encoding($dlname,"SJIS","EUC-JP");
if (file_exists($dlpathname)){
header("Content-type: {$dltype}; charset=SJIS");
header("Content-Disposition: attachment; filename={$covname}");
header("Content-Transfer-Encoding: binary");
header("Content-Length: {$dlsize}");
readfile($dlpathname);
}else{
print "ダウンロードするファイルがありません。";
exit();
}
exit();
?>
phpにてファイルのアップローダーを作成しました。
簡単な仕様としては
1.ユーザがファイルをアップロードする
2.受け取りの担当者へダウンロードページのリンク付きのメールが届く
3.受取り担当者はリンクからダウンロードページへ行く
4.ダウンロードボタンを押すとファイルのダウンロードを実行する。
3までは問題なく動作するのですが、4で不具合があります。
win,MacのIEでは文字化けなくダウンロード出来るが、Mac safariの場合
ダウンロードしたファイル名が文字化けしている。
(日本語以外は正しく表示されます)
解決策を見出せずにいます・・・
ご教授頂けないでしょうか
【サーバ環境】
FreeBSD6.2
php5
【クライアントテスト環境】
winXP SP2 IE6
Mac OS X safari 1.3.2
ダウンロードスクリプト
(ダウンロードボタンを押した際に動くスクリプト)
$dlname,$dltype,$dlsizeはダウンロードリンクのアドレスに情報を持たせてあります
-------------------------------
<?
header("Content-Type: text/html; charset=EUC-JP");
$dlpath = "./data/";
$dlname = $_GET{'fn'};
$dlpathname = "$dlpath$dlname";
$dltype = $_GET{'ft'};
$dlsize = $_GET{'fs'};
$covname = mb_convert_encoding($dlname,"SJIS","EUC-JP");
if (file_exists($dlpathname)){
header("Content-type: {$dltype}; charset=SJIS");
header("Content-Disposition: attachment; filename={$covname}");
header("Content-Transfer-Encoding: binary");
header("Content-Length: {$dlsize}");
readfile($dlpathname);
}else{
print "ダウンロードするファイルがありません。";
exit();
}
exit();
?>
