[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Хранение файлов.
amatory666
Здравствуйте. Есть сайт, на котором с админки можно добавлять файлы "пачками". Т.е. сначала заливаешь все файлы на хост в определенную директорию, потом в админке указываешь путь к ней и нажимаешь сохранить. При этом скрипт читает папку и записывает имена файлов в массив. Потом это все пишется в базу, а файлы перемещаются в другую директорию. Если это все делать с под Линукса, то проблем с кирилицей в названии файлов не возникает. Если же файлы заливать с под Windows, название файлов с кирилицей воспринимается так - ���� ����������.gif. Что можна с этим сделать? Зарание благодарен за ваши ответы.



Спустя 5 часов, 31 секунда (7.08.2009 - 08:16) stepan написал(а):
Например использовать транслит

Спустя 2 часа, 17 минут, 27 секунд (7.08.2009 - 10:33) Nikitian написал(а):
При сохранении давать имена основанные на хэше имени, а реальное имя хранить например в базе или рядом в файлике. Если отдавать файлы через скрипт, то не проблема подставить реальное имя как имя для сохранения.

Спустя 10 минут, 40 секунд (7.08.2009 - 10:44) Magikan написал(а):
мне кажется нада просто изменять имя файлов в UTF-8
я это делаю при помощи
PHP
iconv("windows-1251""UTF-8",$info['Ttitle']);


и тогда все корректно у меня выходит smile.gif

Спустя 2 часа, 16 минут, 34 секунды (7.08.2009 - 13:01) amatory666 написал(а):
Magikan, а если файлы будут заливаться с под Линукса - ты в итоге получишь неправльной переведенную кодироку.

Спустя 2 минуты, 10 секунд (7.08.2009 - 13:03) amatory666 написал(а):
Nikitian, мелишь чушь. Кто будет заполнять эти файлики с именами файлов если там их порядка 1000

Спустя 48 секунд (7.08.2009 - 13:03) Kuliev написал(а):
amatory666
Можно попробовать переименовывать файлы при загрузке на сервер!

Спустя 4 минуты, 52 секунды (7.08.2009 - 13:08) amatory666 написал(а):
stepan, а когда назад с транслита переводить будешь понимаешь что получится?

Спустя 49 секунд (7.08.2009 - 13:09) amatory666 написал(а):
Kuliev, в смысле изменить кодировку в имени файла?

Спустя 7 минут, 38 секунд (7.08.2009 - 13:17) Nikitian написал(а):
Цитата (amatory666 @ 7.08.2009 - 10:03)
Nikitian, мелишь чушь. Кто будет заполнять эти файлики с именами файлов если там их порядка 1000

Загружаешь файлег скриптом. Его имя сохраняется отдельно, данные отдельно. Что тут сложного? Если уже залито, то никто не мешает написать ftp-клиент (или локальный клиент, если сервер один), который будет бегать по серверу и переименовывать, шаманить с iconv'ом и всё, что угодно делать.

Ещё раз повторяю: кирилица в именах файлов - это плохо. Запомните, напишите на стене и выучите. Всегда найдётся пара "клиент-сервер", которая не сможет осуществить передачу такого файла.

Спустя 7 минут, 48 секунд (7.08.2009 - 13:25) Kuliev написал(а):
Цитата (amatory666 @ 7.08.2009 - 15:09)
Kuliev, в смысле изменить кодировку в имени файла?

Ты файлы заливаешь сам лично?

Спустя 9 минут, 7 секунд (7.08.2009 - 13:34) amatory666 написал(а):
Цитата (Kuliev @ 7.08.2009 - 10:25)
Цитата (amatory666 @ 7.08.2009 - 15:09)
Kuliev, в смысле изменить кодировку в имени файла?

Ты файлы заливаешь сам лично?

Да. Я заливаю файлы на хост в папку.

Спустя 9 минут, 44 секунды (7.08.2009 - 13:43) Kuliev написал(а):
amatory666
Есть такая программа Total Commander вот в ней мона переименовать сразу кучу файлов, вот в ней переименуешь сам и зальешь и не будет ни каких проблем!

Спустя 4 минуты, 17 секунд (7.08.2009 - 13:48) amatory666 написал(а):
Решенье должно быть универсально. Закачиваться файлы на хост могут из под разных ОС. Откуда скрипт узнает (При чтении дериктории) в какой кодироке названия файлов?

Спустя 6 минут, 43 секунды (7.08.2009 - 13:54) Kuliev написал(а):
Цитата (amatory666 @ 7.08.2009 - 15:48)
Решенье должно быть универсально. Закачиваться файлы на хост могут из под разных ОС. Откуда скрипт узнает (При чтении дериктории) в какой кодироке названия файлов?

Все ОС хорошо дружат с латиницей, по этому перемениовывай файлы в латиницу, чтобы не было названия файла в кириллице!

Спустя 2 минуты, 29 секунд (7.08.2009 - 13:57) amatory666 написал(а):
Вот именно что нужно чтобы имена файлов были в киррилице. Они потом используются как настоящие имена файлов. Я же не буду выдавать на сайте в название файла в латинице. Это грубо говоря не красиво.

Спустя 2 минуты (7.08.2009 - 13:59) Kuliev написал(а):
amatory666
А что за файлы ты заливаешь ( картинки, программы и т.д.)?

Спустя 8 минут, 24 секунды (7.08.2009 - 14:07) amatory666 написал(а):
Все подряд.

Спустя 1 час, 44 минуты, 25 секунд (7.08.2009 - 15:52) Nikitian написал(а):
Цитата (amatory666 @ 7.08.2009 - 10:57)
Вот именно что нужно чтобы имена файлов были в киррилице. Они потом используются как настоящие имена файлов. Я же не буду выдавать на сайте в название файла в латинице. Это грубо говоря не красиво.

Код
<?php
//Обращаться как script.php?file=filename.xxx
$bads=array('.htaccess','.htpasswd');
define('DIR','upload/');//Директория для файлов
if(!file_exists(DIR.basename($_GET['file'])) || array_search(basename($_GET['file']),$bads)!==false)die('<html><head><meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" /></head><body><table width="100%" height="100%"><tr><td align="center" valign="middle"><h1 style="font-size:60px;">Файл '.basename($_GET['file']).' не найден на сервере</h1></td></tr></table></body></html>');
header("Content-type: application/octet-stream\nContent-Disposition: attachment; filename=\"ЗДЕСЬ ИМЯ ХОТЬ КИРИЛИЦЕй, ХОТЬ ЧЕМ - ЭТО ИМЯ БУДЕТ ПОКАЗЫВАТЬ ПРИ СОХРАНЕНИИ СКАЧАННОГО ФАЙЛА\"');
die(file_get_contents($_GET['file']));

Это маленький скрипт скачки файла. Обратите внимание на то, что написано капсом - вам про это уже второй раз пишу. И красиво, и работает

Спустя 59 минут, 52 секунды (7.08.2009 - 16:52) amatory666 написал(а):
Nikitian, ты наверное не понял суть проблемы. У меня возникает проблема не при СКАЧКИ файла. А тогда, года файлы находятся в дериктори уже на сервере (порядка 1000). И мне нужно скриптом прочитать эту папку, записать имена файлов в бд, а файлы переместить в другую дерикторию. Что тут может быть непонятного?

Спустя 1 час, 18 минут (7.08.2009 - 18:10) Nikitian написал(а):
Да, действительно неточно понял суть дела. Однако, такой подход неправилен. Если работаете с сайтом через админку, то и заливайте файлы так же скриптами, А не через ftp. После небольших танцев с бубном можно и одновременную закачку сделать и докачку, и прогрессбары с оценкой времени закачки. А ежели ещё и flash в руках горит, то заливку сразу папками - совсем не проблема. И зачем в такой благостной ситуации мучить ftp? Понимаю, что он специально для этого, но... не комильфо имхо.

Спустя 19 минут, 51 секунда (7.08.2009 - 18:29) amatory666 написал(а):
Nikitian, а как мне по вашему залить целуй папку с файлами со скрипта админки? В multipat форме натыкать 1000 <input type="file"> ?

Спустя 7 минут, 26 секунд (7.08.2009 - 18:37) Nikitian написал(а):
Только если папки.
Для кучи файлов можно использовать flash мультиаплоадеры, атак же можно архивом и распаковывать на сервере - так получится даже быстрее, чем пофайлово закачивать

Спустя 12 минут, 49 секунд (7.08.2009 - 18:50) amatory666 написал(а):
Цитата (Nikitian @ 7.08.2009 - 15:37)
Только если папки.

1. Как по вашему можно залить папку через админку?
2. А если архив заливать - это ничего не поменяет. Даже когда на сервере этот архив распакуется в названии файлов все равно кодировка останется та же что и была в ОС(там где запоковывали). И это не решит проблему потому что опять же мы не знаем в какой кодировке названия файлов.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.