PHP zip Function проблема - PullRequest
       31

PHP zip Function проблема

1 голос
/ 10 июня 2011

Здравствуйте, я использую приведенный ниже код, чтобы заархивировать пакет при загрузке:

$nameFile = $_FILES['file']['name'];
$tmpName = $_FILES['file']['tmp_name'];
$download_folder = './CopyrightFiles/';

$zip = new ZipArchive();
$fileconpress = $download_folder.$nameFile.".zip";

$conpress = $zip->open($fileconpress, ZIPARCHIVE::CREATE);
if ($conpress === true)
{

    $zip->addFile($tmpName);
    $zip->close();
    echo $fileconpress."<br/>";
    echo "yess !! Success!!!! ";
}
else echo " Oh No! Error";

Кажется, все работает нормально.

Но есть две проблемы.

Во-первых, он сохраняет файл также с оригинальным расширением, например: image.JPG.zip

Также, когда я перемещаю zip-пакет на свой локальный компьютер (Mac) и открываю ZIP, внутри я могу найти толькоПапка tmp с бинарным файлом внутри, а НЕ с изображением или файлом, который должен быть там!

Что, черт возьми, происходит?

Пожалуйста, сообщите

Спасибо

Ответы [ 2 ]

1 голос
/ 10 июня 2011

Выпуск № 1:
Вам необходимо вручную удалить расширение:

$filename = explode('.', $_FILES['file']['name']);
$filename = $filename[0];


Выпуск № 2:
$tmpName не содержит имя файла файла.Вам нужно передать параметр $ localname в addFile ().Смотри http://php.net/manual/en/function.ziparchive-addfile.php.

1 голос
/ 10 июня 2011

Это потому, что ваш «двоичный» файл - это просто временное имя, которое PHP использовал для временного хранения загруженного файла.Вот почему это «tmp_name» в массиве $ _FILES.

Попробуйте это:

$zip->addFile($tmpName, $nameFile);

Второй параметр позволяет указать, какое имя файла должно быть в zip-файле.

Чтобы предотвратить 'file.jpg.zip', попробуйте:

$fileconpress = $download_folder .  pathinfo($_FILES['file']['name'], PATHINFO_FILENAME) . ".zip";
...