2017-12-21 16 views
1

tinymceのプラグインとしてResponsive file manager v9を使用しています。tinymceのバージョンは4.7.4、PHPのバージョンは5.5です。私が試していた問題は、アップロードされたアラビア語のファイルの名前の問題を修正しました.RFMは、名前が正しい名前のアラビア語であるファイルをアップロードしません。応答ファイルマネージャーv9はアラビア語のファイル名の問題をアップロードします

私がテストした画像の名前は、「vvv」、「اختبار」、「اختبار - Copy」です。ファイルをアップロードした後、すべてが「jpg」です。アラビア語の名前は次のようになります。

اختبارJPG ===>ط§ط®طھط¨ط§ط±JPG

اختبار - 。。Copy.jpg ==>ط§ط®طھط¨ط§ط± - Copy.jpg

ただし、config.phpはmb_internal_encoding関数がUTF-8です。

は、私はこのようなUploadHandler.phpライン1097にcp1256にUTF-8の間の変換で使用iconvを試してみました:

move_uploaded_file($uploaded_file, iconv("utf-8", "cp1256",$file_path)); 

代わりの

move_uploaded_file($uploaded_file, $file_path); 

、それはしてファイルをアップロードすることができ、そのアラビア人の名前は、彼らは??????また、 - ブラウザにサムネイル画像をコピーしないでください。ただし、サムフォルダには画像と画像があります.jpgは正しくアップロードされず、悪くなりました。英語のファイル名のみが問題なく動作します。

私はすべてのPHPファイルで作業しましたが、base64_encodeを使用しましたが、config.phpではエンコードを変更しようとしましたが、何も動作しませんでした。

これを修正する方法はありますか?

答えて

0

あなたが「??????と?????」を取得している理由は、データベースのコレクションセットをUTF8の一般的なCIに変更し、ファイル名を保存しないでください(iconv()なし)。iconv()を使用してファイルを移動します。

0

あなたは混乱したくありませんUploadHandler.phpとなります。アップロードの前処理はすべてupload.phpで行われ、ファイル名はfix_filenameutils.phpにマッサージされます。 UploadHandlerになるまでには、ファイル名は既に変更されているので、iconvとなり、友人は動作しません。 fix_filenameを見てそこの文字列を操作してみてください:

/** 
* Cleanup filename 
* 
* @param string $str 
* @param bool $transliteration 
* @param bool $convert_spaces 
* @param string $replace_with 
* @param bool $is_folder 
* 
* @return string 
*/ 
function fix_filename($str, $config, $is_folder = false) 
{ 
    if ($config['convert_spaces']) 
    { 
     $str = str_replace(' ', $config['replace_with'], $str); 
    } 

    if ($config['transliteration']) 
    { 
     if (!mb_detect_encoding($str, 'UTF-8', true)) 
     { 
      $str = utf8_encode($str); 
     } 
     if (function_exists('transliterator_transliterate')) 
     { 
      $str = transliterator_transliterate('Any-Latin; Latin-ASCII', $str); 
     } 
     else 
     { 
      $str = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $str); 
     } 

     $str = preg_replace("/[^a-zA-Z0-9\.\[\]_| -]/", '', $str); 
    } 

    $str = str_replace(array('"', "'", "/", "\\"), "", $str); 
    $str = strip_tags($str); 

    // Empty or incorrectly transliterated filename. 
    // Here is a point: a good file UNKNOWN_LANGUAGE.jpg could become .jpg in previous code. 
    // So we add that default 'file' name to fix that issue. 
    if (strpos($str, '.') === 0 && $is_folder === false) 
    { 
     $str = 'file' . $str; 
    } 

    return trim($str); 
} 
関連する問題