Я создаю программу php, которая загружает zip-файл, извлекает его и создает ссылку для определенного файла в извлеченной папке. Загрузка и извлечение папки работает нормально. Теперь я немного застрял, что делать дальше. Мне нужно просто открыть извлеченную папку и найти (только) html-файл, который находится в нем. Затем необходимо создать ссылку на этот файл.Извлеките папку, а затем найдите конкретный файл в PHP
Вот код I'm, используя в настоящее время:
$zip = new ZipArchive();
if ($zip->open($_FILES['zip_to_upload']['name']) === TRUE)
{
$folderName = trim($zip->getNameIndex(0), '/');
$zip->extractTo(getcwd());
$zip->close();
}
else
{
echo 'Es gab einen Fehler beim Extrahieren der Datei';
}
$dir = getcwd();
$scandir = scandir($dir);
foreach ($scandir as $key => $value)
{
if (!in_array($value,array(".",".."))) //filter . and .. directory on linux-systems
{
if (is_dir($dir . DIRECTORY_SEPARATOR . $value) && $value == $folderName)
{
foreach (glob($value . "/*.html") as $filename) {
$htmlFiles[] = $filename; //this is for later use
echo "<a href='". SK_PICS_SRV . DIRECTORY_SEPARATOR . $filename . "'>" . SK_PICS_SRV . DIRECTORY_SEPARATOR . $filename . "</a>";
}
}
}
}
Так что этот код, кажется, работает. Я заметил довольно странную проблему. Функция $ zip-> getNameIndex [0] ведет себя по-разному в зависимости от программы, создавшей zip-файл. Когда я делаю zip-файл с 7zip, все, кажется, работают без проблем. $ folderName содержит правильное имя основной папки, которую я только что извлек. Например, «папка 01». Но когда я застегиваю его с помощью обычной программы zip для Windows, вы получаете такую же папку (ту же структуру и те же файлы), что и $ zip-> getNameIndex [0] содержит неправильное значение. Например, например, «папка 01/images /» или «папка 01/example.html». Таким образом, кажется, что файл zip по-разному/неверно. Вы, ребята, знаете, откуда эта ошибка, или как я могу ее избежать? Мне это действительно кажется странным.
Вы должны пойти в папку, куда были извлечены файлы, прочитайте это, чтобы найти файл и создать ссылку на основе этой информации. –
У вас есть возможность отлаживать ваш код, чтобы вы могли проверить, где что-то отсутствует или не так? Кажется, что $ value может быть пустым. Каковы значения $ value в каждом цикле? – empiric
попробуйте DIRECTORY_SEPARATOR вместо DS. я должен был поститься с этим, так как нет константы DS, которую вы не определяете для себя, я извиняюсь – empiric