WordPress解決中文檔名檔案無法上傳問題

WordPress解決中文檔名檔案無法上傳問題

解決WordPress中文檔名檔案無法上傳問題-上傳後以原中文檔名存儲

■ 修改 wp-admin/includes/file.php

$new_file = $uploads[‘path’] . “/$filename";
// 找上列程式碼之下加入以下函數 iconv(原來的編碼 , 轉換的編碼 , 轉換的字串)
$new_file = iconv(‘utf-8’, ‘big5//ignore’, $new_file);

// return apply_filters( ‘wp_handle_upload’, array( ‘file’ => $new_file, ‘url’ => $url, ‘type’ => $type ), ‘upload’ );
// 將以上列原程式碼用以下列程式碼取代
return apply_filters( ‘wp_handle_upload’, array( ‘file’ => $uploads[‘path’]."/$filename", ‘url’ => $url, ‘type’ => $type ), ‘upload’ );

註: 祗需更改 ‘file’ => $new_file, 為 ‘file’ => $uploads[‘path’]."/$filename",
■ 修改 wp-admin/includes/media.php

// 把這行註解掉(約在2334行),以下列程式碼取代
// $filename = esc_html( basename( $post->guid ) );
$filename = substr($post->guid, strrpos($post->guid,’/’)+1);

檔案上載後以原中文檔名稱存儲於 wp-content\uploads\ 內。

===========================================
解決WordPress中文檔名檔案無法上傳問題-上傳後以時間戳為名稱存儲

■ 修改 wp-admin\includes\file.php

$filename = wp_unique_filename( $uploads[‘path’], $file[‘name’], $unique_filename_callback );

在上列程式其後加上:
$fileTypeNameArr =explode(“." , $filename);
$countNum=count($fileTypeNameArr)-1;
$fileExt = $fileTypeNameArr[$countNum]; //取得所上傳文件後綴名
$filename = time().’-‘.rand(0,999999999).’.’.$fileExt;//將文件由原名改為時間戳

這樣上傳的文件不再以中文存儲,而是以時間戳為名稱存儲。
上傳中文名的文件後,依然能夠將原中文文件名作為文件的標題。在後台管理界面顯示的是中文標題,因此對於使用沒有影響。