3) ファイル・アップロード時の文字化け対策

WordPressでは、画像ファイル等をアップロードして記事に添付することができますが、その際、日本語ファイル名のファイルをアップロードすると、ファイル名が文字化けしてしまい、正しくファイルを添付することができません。今回はこのファイルアップロード時の文字化け対策について解説します。
インターネットリサーチ・コンサルティング・企画、ウェブ翻訳から、Web制作、システム開発までオープンソース・ネットワークビジネスを提供

WordPressのファイル・アップロード機能

記事投稿画面上の「アップロード」のフォームで、参照ボタンをクリックすることで、PC上の任意のファイルを指定してファイルをアップロードできます。

記事投稿画面
図1 記事投稿画面

ファイルをアップロードすると以下のフォームが表示され、記事内での「表示」方法と、その表示がクリックされた場合の「リンク先」を指定することができます。

記事投稿画面のアップロード・ファイル表示指定フォーム(例)
図2 記事投稿画面のアップロード・ファイル表示指定フォーム(例)

既にアップロードされているファイルは、記事投稿画面のアップロード・フォーム上の「すべてを表示」から確認できます。
画像の場合サムネイル表示、それ以外はリンク名で確認できます。
任意のファイルをクリックすると、前述の表示指定フォームが表示されます。

記事投稿画面でのアップロード・ファイルの確認(例)
図3 記事投稿画面でのアップロード・ファイルの確認(例)

アップロード・ファイルの管理は、ヘッダメニューの「管理>アップロード」から行うことができます。

アップロード管理画面(例)
図4 アップロード管理画面(例)

任意のファイルをクリックすると以下の画面が表示され、該当ファイルの管理操作を行うことができます。

記事投稿画面でのアップロード・ファイルの確認(例)
図5 アップロード管理フォーム(例)
日本語ファイル名の不具合

WordPressでは、アップロード・ファイルは、PC上のファイル名のままでサーバ上に保管され、WindowsPC上で日本語のファイル名を付けると、その文字コードはShift-JISとなります。

一般的にLinuxやUNIXのサーバではEUC-JP等で構成され、WindowsPCとは異なる文字コードを標準としており、Shift-JISの日本語ファイル名のファイルを正常に扱うことができません。

また、日本語ファイル名のファイルへのリンクURLが正しく生成されないといった不具合も発生します。
以上から、WordPressでは、日本語ファイル名のファイルをアップロードすると、アップロード・ファイルの投稿記事への貼り付けやリンク、管理画面でのアップロード管理が正常に動作しない問題が発生します。

対応方法

上記不具合には、日本語のファイル名を半角英数字のファイル名に変換して保存するようWordPressのPHPソースに修正を加えることで、対処できます。
以下、その具体的な方法を示します。

  • 対象:
    wp-admin/admin-functions.phpの wp_handle_uploads() 関数
  • 修正内容:
    1947行目
    $filename = str_replace( array( ‘\\’, “‘” ), ”, $filename );
    の下に以下コードを追加
    $filename = “f”.time();
  • この修正により
    アップロード・ファイルは、ファイル名が「f+システム時間.拡張子」に変換されて保管されることから、日本語ファイル名もアップロード可能となります。
  • 備考
    追加する行数目は、上記参考に実際のソース内容に合わせて判断して下さい。
    ファイルの命名は、半角英数字であれば任意のものに変更可能です。追加コードを調整して下さい。
    尚、WrodPressでは、同じファイル名が既に存在する場合、自動的にファイル名に通番が付与される仕組みとなっています。
ファイルの種類

ファイルの種類については、マイクロソフト・オフィスのファイルやpdfファイル等、画像以外のファイルもアップロードできます。

関連キーワード
BLOG,WordPress,WordPressME,ファイル,アップロード,日本語,文字化け

コメントをお待ちしています

お名前:

メールアドレス:

コメント:

このエントリーのトラックバックURL

http://it.jfe-tec.jp/mt/mt-tb.cgi/79