Консультация № 186920
11.12.2012, 11:34
78.70 руб.
0 2 0
Здравствуйте! Прошу помощи в следующем вопросе:
имею код
Код:
//file archiving - файл для архивирования, в php вместо пробелов не нужно указывать "%20", лучше указывать "_"
$file_archiving ='Library/Pravila_doroznogo_dvizeniya_RF.doc';
//file in archive - файл в архиве, в php вместо пробелов не нужно указывать "%20", лучше указывать "_"
$file_in_archive ='Library/Pravila_doroznogo_dvizeniya_RF.zip';

//file in archive - файл в архиве, в php вместо пробелов не нужно указывать "%20", лучше указывать "_"
$file_archiving1 ='Правила дорожного движения РФ.doc';
//file in archive - файл в архиве, в php вместо пробелов не нужно указывать "%20", лучше указывать "_"
$file_in_archive1 ='Правила дорожного движения РФ.zip';

$size = file_size($file_archiving);
echo "<p></p>
<a href='$file_archiving' title='Скачать файл'>Скачать файл: $file_archiving1, размер файла: $size</a>";
//if - если, isset — определяет, была ли установлена переменная значением отличным от NULL
if (isset($file_archiving))
{
//создаётся объект
$zip_archive = new ZipArchive();
//if - если, $zip_archive -> open(getcwd()."/$file_in_archive", ZIPARCHIVE::CREATE - открывается новый zip-архив
if ($zip_archive -> open(getcwd()."/$file_in_archive", ZIPARCHIVE::CREATE) == TRUE)
{
//к архиву добавляется файл (это можно повторить несколько раз)
$zip_archive -> addFile($file_archiving, $file_archiving);
//закрывается созданный архив с сохранением всех добавлений
$zip_archive -> close();
$size = file_size($file_in_archive);
echo "<p></p>
<a href='$file_in_archive' title='Скачать файл в архиве'>Или скачать заархивированный файл: $file_in_archive1, размер файла: $size</a>";
}
}

не верю я что нельзя скачивать файлы с кириллицей и с пробелами в имени файла
как это сделать?

Обсуждение

Неизвестный
11.12.2012, 15:44
общий
11.12.2012, 15:46
не верю я что нельзя скачивать файлы с кириллицей и с пробелами в имени файла

Можно.
как это сделать?

В зависимости от браузера и операционной системы при отдаче файла выставлять заголовок
Код:
content-disposition: attachment; filename="$filename"

с именем файла в правильной кодировке и возможно заголовок
Код:
content-type: application/octet-stream

Файл отдавать из скрипта, а не напрямую.

Но есть другая большая проблема - кириллица в именах файлов в zip-архиве. С этим ничего поделать не получится, так как эти архивы всегда распаковываются исходя из того, что были запакованы в той же локали, в которой распаковываются.
Поэтому имена файлов, запаковываемых в архив нужно приводить к транслиту. Или использовать 7-zip, там в 7z архивах явно определена кодировка имен файлов utf-8.
Неизвестный
11.12.2012, 18:59
общий
можете выложить полный код - в пхп я полный 0
Форма ответа