Как сжать какой-то файл в каталоге другого сайта с помощью php - PullRequest
1 голос
/ 09 июня 2019

Я хочу создать zip-файл, содержимое файла было получено с другого веб-сайта.Например, у меня есть файл:

http://examples.com/path/file.txt

, и я хочу загрузить file.txt в виде zip-файла.Я пробовал с file_get_contents();, но он не работает.

$content = file_get_contents(http://examples.com/path/file.txt);
$zip = new ZipArchive;
$res = $zip->open('config.zip', ZipArchive::CREATE);
if ($res === TRUE) {
    $zip->addFromString(file.txt, $content);
    $zip->close();
    echo 'OK';
} else {
    echo 'Failed';
}

Я думаю, что он получит содержимое file.txt и создаст сжатый zip-файл, но когда я открою выходной файл, это не так (неполное предложение).

1 Ответ

0 голосов
/ 09 июня 2019

Я бы предпочел использовать gzencode(), если вам нужно только 1 сжатие файлов:

// dump & compress
$file = '/tmp/image.png.gz';
$content = file_get_contents('https://dummyimage.com/600x400/aff/bbb');
$compr = gzencode($content, 9);
file_put_contents($file, $compr);

// download
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);

Имейте в виду, что могут быть различные проблемы с правами доступа / изоляцией файлов.Например, по умолчанию Ubuntu изолирует папку /tmp для процесса PHP.Если вы хотите, чтобы папка / tmp для процесса PHP была global - вы должны установить для PrivateTmp функцию FALSE.

...