Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2013, 11:56   #1
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,039
По умолчанию скачивать файлы с кириллицей и с пробелами в имени файла

Здравствуйте! Прошу помощи в следующем вопросе:
имею код:
Код:
//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>";
}
}
не верю я что нельзя скачивать файлы с кириллицей и с пробелами в имени файла
как это сделать?
Ципихович Эндрю вне форума Ответить с цитированием
Старый 08.01.2013, 13:02   #2
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,039
По умолчанию

я слышал, что нужно забудьть вообще о русском языке в программировании, его там не существует
но тогда может есть прога, которая закидывает файлы на сервер переименовывая их в траслит?
Ципихович Эндрю вне форума Ответить с цитированием
Старый 08.01.2013, 17:21   #3
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

верить - не верить ваше дело. Но то что нативной поддержки кириллицы нет в вебе - да и не только - однозначно. Можно взять и наваять простую функцию на php и пользоваться.....
ИМХО ... пользователю вообще глубоко начихать как и что называется... лишь была та инфа, которая нужна
ADSoft вне форума Ответить с цитированием
Старый 08.01.2013, 21:54   #4
LZero
Форумчанин
 
Регистрация: 20.07.2012
Сообщений: 129
По умолчанию

Какая кодировка используется?
LZero вне форума Ответить с цитированием
Старый 09.01.2013, 15:16   #5
VY_CMa
Пользователь
 
Аватар для VY_CMa
 
Регистрация: 13.03.2010
Сообщений: 38
По умолчанию

Вобще-то есть поддержка кириллицы, причем даже в неявном виде...
Код:
<?
$перем1 = "да, кириллическое имя вары";
echo $перем1;
Проверьте. А дело у ТС, как уже сказал пользователь вы скорее всего в кодировке.
VY_CMa вне форума Ответить с цитированием
Старый 14.01.2013, 11:35   #6
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,039
По умолчанию

в этом примере:
Код:
<?
$перем1 = "да, кириллическое имя вары";
echo $перем1;
я и не сомневаюсь
Можно взять и наваять простую функцию на php и пользоваться..... - есть код примера?
пользователю вообще глубоко начихать как и что называется - не верно, русскоговорящие что не могут сделать для русскоговорящих??!!
Ципихович Эндрю вне форума Ответить с цитированием
Старый 16.01.2013, 21:26   #7
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,039
По умолчанию

апну тему, нуждаюсь в коде
Ципихович Эндрю вне форума Ответить с цитированием
Старый 16.01.2013, 21:42   #8
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Название файлов кириллицей – это дурь, и не только в web.
Транслитерация поможет корректно преобразовать кириллицу в латиницу.
Это и есть решение всех проблем – независимо от кодировок и прочих настроек серверов и страниц.
А вообще это одна из дыр в безопасности – оставлять без изменения имя загруженного юзером файла.

Последний раз редактировалось Andkorol; 16.01.2013 в 22:04. Причина: ))
Andkorol вне форума Ответить с цитированием
Старый 16.01.2013, 21:52   #9
LZero
Форумчанин
 
Регистрация: 20.07.2012
Сообщений: 129
По умолчанию

У меня работает. Разве только названия файлов кириллицей в архиве превращается в крокозябры, но после смены кодировки на досовскую - все нормально.

PHP код:
<?php
header
('Content-Type: text/html; charset=utf-8');
$filesAdd = array('./в архив.doc''./архивирование файла.png');
$archName './Мой архив.zip';

$zip = new ZipArchive();
$zip->open($archNameZipArchive::CREATE);
foreach (
$filesAdd as $file)
    
$zip->addFile($fileiconv('UTF-8''CP866'$file));
$zip->close();

echo 
"<a href='{$archName}'>{$archName}</a>";
Это все сохраняете в файл с кодировкой утф-8.

Последний раз редактировалось LZero; 16.01.2013 в 21:55.
LZero вне форума Ответить с цитированием
Старый 17.01.2013, 17:37   #10
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,039
По умолчанию

как бы всё понятно, спасибо временно не могу проверить, проверю отпишусь, а пока можно Вас попросить выложить полностью файл index.html в блокноте с соблюдением кодировки, если форум не принимает таких файлов тогда в раре, чтобы уже точно проверить Ваш вариант
Название файлов кириллицей – это дурь, и не только в web - не согласен, когда не могут решить проблему пытаются так отвечать, есть проблема и её надо решать и она решаема!!!!!!
Ципихович Эндрю вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрет скачивать файлы по маске (*.exe,*.msi,*.mp3) Noor Софт 10 16.05.2012 10:55
Получить имя файла из ссылки(в конце ссылки нет имени файла) Человек_Борща Работа с сетью в Delphi 11 05.06.2011 15:15
Переместить файлы по папкам, в зависимости от имени файла Paul Hindenburg Общие вопросы Delphi 1 07.07.2009 09:50
как прочитать из файла имя, фамилию разделенные пробелами и записать их в массив парами Rom@shka Общие вопросы C/C++ 2 13.12.2008 16:40
Массив в имени файла LeoN Общие вопросы Delphi 3 01.01.2007 14:24