Структура каталогов испорчена при распаковке zip-файла в Linux, в то время как zip-файл создается в windows с использованием php zip-архива

Структура каталогов испорчена при распаковке в Linux, в то время как zip-файл создается в Windows с использованием php ZIPArchive

Создание Zip в Windows ---> Разархивировать в Windows -> Нет isuses
Создание Zip в Linux ---> Разархивировать в Linux -> Нет isuses
Создание Zip в Windows ---> Разархивировать в Linux ---> Файлы не распаковываются в нужные каталоги

Структура папки для архивирования

b2c
-> данные
d.xml
---> метатада
m.xml

Создайте почтовый индекс, используя код ниже на платформе Windows. Теперь распакуйте в Linux. Вот структура, вместо того, чтобы помещать d.xml в b2c \ data, она создает файл data \ d.xml.

b2c
данные \ d.xml
метаданные \ m.xml

Исходный код

<?php

define('DS', DIRECTORY_SEPARATOR);
/*
$folder_to_zip = 'c:'. DS .'temp'. DS . 'b2c';
$zip_file      = 'c:' . DS . 'temp' .DS . 'b2c'. DS . 'b2c.zip';
create_zip($folder_to_zip,  $zip_file);

$folder_to_unzip = 'c:' . DS . 'temp1';

$src_zip_file   = 'c:'. DS . 'temp' . DS . 'b2c' . DS . 'b2c.zip';
unzip_file($folder_to_unzip,$src_zip_file);
*/

$folder_to_zip = DS. 'home' . DS . 'bitnami' .  DS . 'temp' . DS .  'b2c';
$zip_file      = DS. 'home' . DS . 'bitnami' . DS . 'temp' . DS .  'b2c'. DS . 'b2c.zip';
create_zip($folder_to_zip,  $zip_file);

$folder_to_unzip = DS. 'home' . DS . 'bitnami' . DS . 'temp1' . DS .  'b2c';
$src_zip_file   = DS. 'home' . DS . 'bitnami' . DS . 'temp' . DS .  'b2c'. DS . 'b2c.zip';

unzip_file($folder_to_unzip,$src_zip_file);function create_zip($folder_to_zip,  $zip_file) {
$rootPath = realpath($folder_to_zip);
$zip = new ZipArchive();
$zip->open($zip_file, ZipArchive::CREATE | ZipArchive::OVERWRITE);
// Create recursive directory iterator /** @var SplFileInfo[] $files */
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($rootPath),
RecursiveIteratorIterator::LEAVES_ONLY);
foreach ($files as $name => $file)
{
// Skip directories (they would be added automatically)
if (!$file->isDir())
{
// Get real and relative path for current file
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen($rootPath) + 1);
$zip->addFile($filePath, $relativePath);
}
}
$zip->close();
}

function unzip_file($folder_to_unzip,$src_zip_file) {

$zip = new ZipArchive;
$res = $zip->open($src_zip_file);
if ($res === TRUE) {
$zip->extractTo($folder_to_unzip);
$zip->close();
return TRUE ;
} else {
return FALSE ;
}
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]