2022/07/04 15:51 JST
Geeklog Japan Forums
日本語ファイル名のアップロード
ページナビゲーション
お世話になります。
ファイル管理とメディアギャラリを使い始めましたがファイル名が日本語のファイルをアップロードすると文字化けします。
サーバー環境はWindows2000でUTF-8の設定をしていますが、このサーバーではアップロードは出来るがダウンロード時点で以下のエラーとなります。(アップロード後のファイル名・MySQL管理情報とも文字化けしています)
<なぜか西欧ISO-8859-1でエラー表示される>
Not Found
The requested URL /filemgmt_data/files/Lï¼317.xls was not found on this server.
php.iniの日本語設定(mbstring)を変更したりしていますが現象は変わりません。
思いついて「GeeklogJapanese」様のデモサイトでやってみましたが以下のようなエラーになりました。
An error has occurred:
2 - move_uploaded_file(/var/www/virtual/geeklog.jp/demo141/htdocs/filemgmt_data/files/tmp/ohizY4DPdV.xls) [function.move-uploaded-file]: failed to open stream: 許可がありません @ /var/www/virtual/geeklog.jp/demo141/htdocs/filemgmt/submit.php line 122
array(400) {
["HTTP_POST_VARS"]=>
array(7) {
["title"]=>
<以下省略>
デモサイトの場合は登録時点でエラーになってしまいますが「日本語のファイル名」は使えないのでしょうか?
お忙しい中、有難うございます。
当面は日本語ファイル名のアップロードは制限事項として了解しましたが、友人(師匠)の「turikiti」さんに相談したところ、以下の対応でアップロードは可能になりました。
但し、ちゃんと修正するには、
1 private/plugins/filemgmt/config.php にシステムファイル管理用言語を定義しておく(SJIS)
2 上記を利用して、system_file_name($filename) とかの関数を作成する。 ファイル名の変換はこれを利用する。
3 上記の修正では、見ることは出来るが、名前の変更などには対応していない。
処理は、全てindex.php 内にあるので、これを見つけて全て修正することが必要。
だそうです。
---------------------------------------------------------
/public_html/admin/plugins/filemgmt/index.php の修正
if (file_exists($tmp) && (!is_dir($tmp))) { // if this temporary file was really uploaded?
$newfile = $filemgmt_FileStore .$name;
COM_errorLOG("File move from ".$tmp. " to " .$newfile );
//
//20080313 turikiti modified
//修正の要点(アップロード時、日本語ファイル名の文字化け対応)
//アップロード時点では、temp ファイル名で保存されているので、これはいじりません。
//承認時点で、tmp から通常のファイルに変更されるので、これを修正します。
//index.php 947行から 951 行め $newfile を $sjisnewfile = mb_convert_encoding($newfile,'SJIS');としています。
//処理は、$newfile と $sjisnewfile の使いわけをちゃんと考えないとえらい亊になります。
//ファイル操作のみ$sjisnewfileDB操作、内部操作は$newfileになります。
//
$sjisnewfile = mb_convert_encoding($newfile,'SJIS');
$rename = @rename ($tmp,$sjisnewfile);
COM_errorLOG("Results of rename is: ".$rename);
$chown = @chmod ($sjisnewfile,$filemgmtFilePermissions);
if (!file_exists($sjisnewfile )) {
//end
COM_errorLOG("Filemgmt upload approve error: New file does not exist after move of tmp file: '".$newfile ."'");
$AddNewFile = false; // Set false again - in case it was set true above for actual file
$eh->show("1101");
} else {
$AddNewFile = true;
}
-----------------------------------------------------------
状態: オフライン
charley
Forum User
Chatty
登録日: 2008/02/06
投稿数: 49
お世話になります。
ファイル管理で日本語ファイル名が扱えない件
前回の修正では「削除」のとき実ファイルが削除できていない問題がありましたがこれを対応しました。
また、「修正」時点でファイル名の変更が許されていますが対応できていないためファイル名は表示のみに変更ししました。
今回の修正は関数を2個追加し、ファイル名関連の変更3箇所、
「修正」時のファイル名表示の変更1箇所です。
変更箇所は「turi-kiti」で検索してください。
<対象ファイル>
geeklog公開領域/admin/plugins/filemgmt/index.php
評価はWindows2000のみで行っています。他のOSは動作するか不明です。
変更箇所が多いためとりあえず(非力な自宅サーバーですが・・・)
http://apc9.com
の「ダウンロード」からDLできます。使えるようでしたらご利用ください。
「Geeklog Japanese」の関係者様、「turikiti」様、ありがとうございました。
ページナビゲーション
時刻はすべて JST , 現在の時刻は 03:51 PM
- 通常
- 注目トピック
- ロック済
- 新着
- 注目トピック 新着
- ロック済トピック 新着
- ゲストユーザの投稿を見る
- 投稿可能
- 一部のHTMLを許可
- バッドワードをチェック
検索
ユーザー機能
リモートログイン
イベント
-