将文件添加到 ZIP 存档的子文件夹?
Add file to sub-folder to ZIP archive?
我想将包含文件的子文件夹添加到存档。
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);
我不能使用它,因为我不需要我文件夹中的所有文件。
我有一些关于文件的信息的数组:
$paths = [
[
'name' => 'file',
'ext' => 'txt',
'path' => '/folder/'
],
[
'name' => 'subFolder',
'ext' => 'folder',
'path' => '/folder/'
],
[
'name' => 'fileInSubFolder',
'ext' => 'txt',
'path' => '/folder/subFolder/'
]
];
在循环中我这样做:
if( $folder[$i]['ext'] == 'folder' )
$zip->addEmptyDir($fileName);
else
$zip->addFromString( $fileName.$fileExt, file_get_contents($fileFullPath.$fileExt));
如果"folder",那么我在存档中创建空文件夹,否则将文件添加到存档中。
但是,如果文件位于子文件夹中,那么文件将添加到存档的根目录中。
而且,如何将文件添加到新的空子文件夹中?
或者如何更改当前目录以添加文件?
你没有 "change directory" 与 ZipArchive 你总是在添加文件时传递绝对文件路径。
现在,我不确定为什么你有一个 $paths
数组,然后你循环遍历 $folders
因为我看不到你的所有代码,但是如果你循环遍历你的 $paths
array 你会想要将你存储的绝对路径追加到文件名的前面。
$paths = [
[
'name' => 'file',
'ext' => 'txt',
'path' => '/folder/'
],
[
'name' => 'subFolder',
'ext' => 'folder',
'path' => '/folder/'
],
[
'name' => 'fileInSubFolder',
'ext' => 'txt',
'path' => '/folder/subFolder/'
]
];
if( $paths[$i]['ext'] == 'folder' ) {
$zip->addEmptyDir($fileName);
} else {
// This would create "/folder/subFolder/fileInSubFolder.txt"
$fullFileName= $paths[$i]['path'] . $paths[$i]['name'] . "." . $paths[$i]['ext'];
$zip->addFromString( $fullFileName, /* File Data Here */);
}
我想将包含文件的子文件夹添加到存档。
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);
我不能使用它,因为我不需要我文件夹中的所有文件。 我有一些关于文件的信息的数组:
$paths = [
[
'name' => 'file',
'ext' => 'txt',
'path' => '/folder/'
],
[
'name' => 'subFolder',
'ext' => 'folder',
'path' => '/folder/'
],
[
'name' => 'fileInSubFolder',
'ext' => 'txt',
'path' => '/folder/subFolder/'
]
];
在循环中我这样做:
if( $folder[$i]['ext'] == 'folder' )
$zip->addEmptyDir($fileName);
else
$zip->addFromString( $fileName.$fileExt, file_get_contents($fileFullPath.$fileExt));
如果"folder",那么我在存档中创建空文件夹,否则将文件添加到存档中。 但是,如果文件位于子文件夹中,那么文件将添加到存档的根目录中。 而且,如何将文件添加到新的空子文件夹中? 或者如何更改当前目录以添加文件?
你没有 "change directory" 与 ZipArchive 你总是在添加文件时传递绝对文件路径。
现在,我不确定为什么你有一个 $paths
数组,然后你循环遍历 $folders
因为我看不到你的所有代码,但是如果你循环遍历你的 $paths
array 你会想要将你存储的绝对路径追加到文件名的前面。
$paths = [
[
'name' => 'file',
'ext' => 'txt',
'path' => '/folder/'
],
[
'name' => 'subFolder',
'ext' => 'folder',
'path' => '/folder/'
],
[
'name' => 'fileInSubFolder',
'ext' => 'txt',
'path' => '/folder/subFolder/'
]
];
if( $paths[$i]['ext'] == 'folder' ) {
$zip->addEmptyDir($fileName);
} else {
// This would create "/folder/subFolder/fileInSubFolder.txt"
$fullFileName= $paths[$i]['path'] . $paths[$i]['name'] . "." . $paths[$i]['ext'];
$zip->addFromString( $fullFileName, /* File Data Here */);
}