Форум

/ домой \ \ темы /



Тема: ссылки на файлы с русскими символами

11/01/2012 20:09 Sky:
отрывок html кода

<img src="фото.jpg" align=left>

лог

!->11/01 22:16:03 [94.41.84.237:2205>80] (t1 3)
\фото.jpg(Undefined/default)
Error. File not found.^!!
!->11/01 22:16:03 [94.41.84.237:2205>80] (t1 4) >\фото.jpg(Undefined/default)
Error. File not found.



вопрос - программа нераспознает русские имена файлов?


ставил конвертацию UTF-8

!->11/01 22:25:13 [94.41.84.237:2445>80] (t1 7)
\ДоВо.jpg(Undefined/default)
Error. File not found.^!

проблемма осталась
16/01/2012 22:48 den_po:
Автор писал, что не хочет делать поддержку утф8 в ссылках, ага.
Можно кодировать имена в хекс типа %20%CA%F3%E4%E0. Но это ладно, можно пережить. А вот что программа не открывает файлы, ссылки на которые сама же генерирует при открытии папок - это, по-моему, бред. А автору пофик.
16/01/2012 22:50 den_po:
Я хотел сказать, что ссылки, сгенерированные сервером, оказываются нерабочими, если не пошаманить с настройками браузеров (что большинство пользователей делать точно не будут)
18/01/2012 08:54 GDragon:
поддерживаю :)
18/02/2012 18:17 InFreeBSD:
Пробуйте скрипт. Немного нужно причесать, а так вроде неплохо реализована поддержка русских символов в именах файлов. Проблемка в Mozilla Firefox, в Internet Explorer и Opera нормально.


18/02/2012 18:17 InFreeBSD:
<?php
# ВАЖНАЯ ИНФОРМАЦИЯ!

# В вашем "php.ini" должны быть следующие три параметра:
# file_uploads = On
# ^ включаем поддержку загружаемых файлов.
# upload_tmp_dir = ПОЛНЫЙ_ПУТЬ_ДО_ПАПКИ_ГДЕ_БУДУТ_ХРАНИТЬСЯ_ЗАГРУЖАЕМЫЕ(ВРЕМЕННЫЕ)_ФАЙЛЫ
# ^ Например: upload_tmp_dir = d:/server/php/uploads
# и
# upload_max_filesize = 2M
# ^ Максимальный размер загружаемых файлов (в нашем случаем 2 МБ).

# register_long_arrays = On

// Куда сохраним файл?
// Давайте в папке с этим скриптом,
// создадим папку "pub", туда-то и будем
// сохранять все загружаемые файлы.

$path=GetCWD()."/pub";

// Проверяем на существование папку $path

if(!file_exists($path))
{
die("<b>Пожалуйста, создайте папку <font color=red>".$path."</font> и <a href=?>повторите попытку загрузить файл</a>.</b>");
}
// Выводим форму для загрузки файла.

if(empty($_FILES['UserFile']['tmp_name']))
{
echo "<form method=post enctype=multipart/form-data>Выберите файл: <input type=file size=35 name=UserFile><input type=submit value=Отправить></form>";
}
// Если файл не загружен по каким-то причинам, выводим ошибку.

elseif(!is_uploaded_file($_FILES['UserFile']['tmp_name']))
{
die("<b><font color=red>Файл не был загружен! Попробуйте <a href=?>повторить попытку</a>!</font></b>");
}
// Если файл удачно загружён на сервер, делаем вот что...

else
{
// Переносим загружённый файл в папку $path

if(@!copy($_FILES['UserFile']['tmp_name'],$path.chr(47).$_FILES['UserFile']['name']))
{
// Если не удалось перенести файл, выводим ошибку:
die("<b><font color=red>Файл не был загружен! Попробуйте <a href=?>повторить попытку</a>!</font></b>");
}
// Если всё Ok, то выводим инфо. о загружённом файле.

else
{
echo "<center><b>Файл <font color=red><A HREF='midi.php?name=".$_FILES['Use
18/02/2012 18:18 InFreeBSD:
rFile']['name']."' target='_top'>".$_FILES['UserFile']['name']."</A></font> успешно загружён на сервер!</font></b></center>".
"<hr>".
"Тип файла: <b>".$_FILES['UserFile']['type']."</b><br>".
"Размер файла: <b>".round($_FILES['UserFile']['size']/1024,2)." кб.</b>".
"<hr><center><a href=?>Загрузить ещё один файл!</a></center>";
}
}


$fn = $HTTP_GET_VARS['name'];
$filename = './pub/' . $fn;

if(strstr($fn, '/'))
{
// небольшая защита от попыток закачки из других каталогов
header($HTTP_SERVER_VARS["SERVER_PROTOCOL"] . " 403 Forbidden");
exit;
}
if(!file_exists($filename))
{
header($HTTP_SERVER_VARS["SERVER_PROTOCOL"] . " 404 Not Found");
exit;
}
$fsize = filesize($filename);
$ftime = date("D, d M Y H:i:s T", filemtime($filename));
$fd = @fopen($filename, "rb");
if(!$fd)
{
header($HTTP_SERVER_VARS["SERVER_PROTOCOL"] . " 403 Forbidden");
exit;
}
// Если запрашивающий агент поддерживает докачку
if($HTTP_SERVER_VARS["HTTP_RANGE"])
{
$range = $HTTP_SERVER_VARS["HTTP_RANGE"];
$range = str_replace("bytes=", "", $range);
$range = str_replace("-", "", $range);
if($range)
fseek($fd, $range);
}
$content = fread($fd, $fsize);
fclose($fd);

if($range)
{
header($HTTP_SERVER_VARS["SERVER_PROTOCOL"] . " 206 Partial Content");
}
else
{
header($HTTP_SERVER_VARS["SERVER_PROTOCOL"] . " 200 OK");
}
header("Content-Disposition: attachment; filename=$fn");
header("Last-Modified: $ftime");
header("Accept-Ranges: bytes");
header("Content-Length: " . ($fsize-$range) );
header("Content-Range: bytes $range-".($fsize -1). "/" . $fsize);
header("Content-Type: application/octet-stream");
print $content;
exit;
?>
18/02/2012 18:20 InFreeBSD:
назовите файл "midi.php". С ув.
08/11/2012 18:58 SergKr:
Link temporary removed
Фришный сервер, русские имена ловит на ура...
Для быстрой расшарки файлов/папок с русскими именами самое оно. Может и автор на это обратит внимание. Видать не такая это уже и проблема - национальные символы.

Пользователь: Пароль: Новый пользователь:   Запомнить пароль: