Хотите создать функциональность веб-приложения, которая позволяет пользователю скачивать все изображения.Нужны некоторые указатели - PullRequest
0 голосов
/ 16 декабря 2010

Я создаю специальное приложение для клиента (фотографа для коммерческой недвижимости), используя типичную настройку PHP / MySql.Это приложение позволит клиентам моего клиента получать доступ к изображениям, назначенным им, просматривать их и загружать их.

Мне нужно добавить опцию, чтобы позволить его клиентам нажимать «загрузить все - качество печати» и «загрузить все - веб-разрешение».Когда изображения загружаются, они автоматически сохраняются в этих отдельных разрешениях.Чтобы дать вам представление, сложение изображений, которые клиент обычно хочет загрузить, будет занимать до 500 МБ.Я думаю, что все изображения будут сжаты в zip-файл.

Как вы предлагаете мне подойти к этому, и если вы знаете какой-либо источник, который может мне помочь?

Ответы [ 4 ]

1 голос
/ 16 декабря 2010

Вы не должны генерировать ZIP-файл на лету для каждой загрузки. Это было бы очень неэффективно.

Когда изображения загружены, создайте два новых файла ZIP из изображений (по одному для каждого размера). Добавьте два столбца к вашей таблице, указывая на меньший ZIP, а другой - на больший. Просто укажите ваши две ссылки там.

1 голос
/ 16 декабря 2010

Вы можете использовать PHP Zip

пример можно найти здесь: http://www.php.net/manual/en/zip.examples.php

ИЛИ

Если вы предпочитаете грязный раствор, вы можете использовать встроенную функцию linux tar и комбинировать с exec


Я предполагаю, что у вас должно быть 3 разных размера для каждого изображения, и ваш почтовый индекс сосредоточен только на выборе изображений с правильным размером для добавления в архив.

Тем не менее, вышеупомянутое не является проблемой, вы должны убедить своих клиентов в лучшем способе загрузки этих огромных файлов, например, рассмотреть возможность использования программы ftp или некоторых инструментов загрузки вместо просто через гиперссылку http (шансы на сбой слишком высокий) * * 1 021

0 голосов
/ 16 декабря 2010

Используйте ZipArchive , сохраните его во временном файле и затем выведите:

$path = '/path/to/your/images';

// search for files matching *.png; *.gif; *.jpg
$files = glob($path.'/*.{png,gif,jpg}', GLOB_BRACE);

// create temporary filename
$tmp = tempnam(sys_get_temp_dir(), 'images');

// create zip
$zip = new ZipArchive;
$zip->open($tmp, ZIPARCHIVE::CREATE);
foreach ($files as $file) {
    // may want to manipulate $file to remove the directory prefix
    $zip->addFile($file);
}
$zip->close();

// output as an attachment
header('Content-Type: application/zip');
header('Content-Disposition: attachment;filename=foo.zip');
readfile($tmp);

Конечно, если у вас действительно есть 500 МБ изображений, это займет некоторое время. Вам, вероятно, лучше архивировать файлы заранее (cron или при каждой загрузке).

0 голосов
/ 16 декабря 2010

Я бы сказал, что почтовый индекс - это путь. Использование PHP для архивации выбранных файлов на лету, а затем пользователь автоматически загружает их.

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

это может помочь http://davidwalsh.name/create-zip-php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...