У нас есть несколько файлов в zip-файле.
Файл 1: 5_08020083975_sugihara.pdf
Файл 2: 5_08020083975_ ス ギ ハ p .pdf
Когда файл Zip извлекается с помощью ZipArchive в php
Имя файла 2 преобразуется в 5_08020083975_âXâMânâë.pdf вместо 5_08020083975_ ス ギ ハ ラ .pdf
Мы Вы загрузили этот код на Linux сервер
Примечание:
Все (извлечение) работает нормально, кроме преобразования языка. Также проверяется путем установки локали в ja_JP.utf-8
Код, который мы используем:
$ZipFile = $request->ZipFile;
$zip_filename = $ZipFile->getClientOriginalName();
$zip_file_path = public_path() . '/pdf/' . $zip_filename;
$result = move_uploaded_file($ZipFile, $zip_file_path);
chmod($zip_file_path, 0775);
$zip = new \ZipArchive();
$res = $zip->open($zip_file_path);
$extract_path=public_path() . '/pdf/'.time().'/';
if ($res === TRUE) {
$zip->extractTo($extract_path);
$zip->close();
$dir_paths=scandir($extract_path);
if(isset($dir_paths[2]))
{
$extract_paths=public_path() .'/pdf/'.time().'/'.$dir_paths[2].'/';
}
else
{
$extract_paths=public_path() .'/pdf/'.time().'/';
}
$extract_file_name=scandir($extract_paths);
for ($i=2; $i < count($extract_file_name) ; $i++) {
$file_details=explode('_',$extract_file_name[$i]);
$user_id = $file_details[0];
$mobile_number = $file_details[1];
$file_name = $file_details[2];
rename($extract_paths.$extract_file_name[$i], public_path().'/pdf/'.$extract_file_name[$i]);
Payslips::create([
'user_id' => $user_id,
'mobile_no' => $mobile_number,
'filename' => explode('.', $file_name)[0],
'created_at' => date("Y-m-d H:i:s"),
'updated_at' => date("Y-m-d H:i:s"),
]);
}
rmdir($extract_paths);
rmdir($extract_path);
unlink($zip_file_path);
return redirect()->back()->with('success', 'アップロードが完了しました。');
} else {
return redirect()->back()->withErrors(['Extract Failed!!!']);
}
Пожалуйста, дайте мне знать, что нужно добавить, чтобы получить правильный преобразование языка TIA.