Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как узнать размер и расширение файла? (https://javascript.ru/forum/misc/15098-kak-uznat-razmer-i-rasshirenie-fajjla.html)

Shitbox2 13.02.2011 14:43

Как узнать размер и расширение файла?
 
На страничке есть ссылка на файл
<a href="file.doc">Файл</a>

Рядом с ссылкой должны автоматически указываться расширение и размер файла: Файл (DOC, 15 КБ)

Как это сделать?
Не нашел в JS нужных функций.

Kolyaj 13.02.2011 15:14

Это делается на сервере.

Shitbox2 13.02.2011 16:55

Т.е. придется писать серверную программу или можно на PHP сделать?

NoResponse 13.02.2011 17:13

можно сделать на пхп

B@rmaley.e><e 13.02.2011 17:24

А php что, не на сервере работает?

Shitbox2 13.02.2011 20:44

Вот, а как тогда на ПХП это замутить? Может быть есть какие-нибудь готовые решения, ведь на каждом форуме показываются параметры прикрепленных файлов.

Дайте, какую-нибудь наводку, плиз.

B@rmaley.e><e 13.02.2011 21:36

Стандартные функции же
$extension = pathinfo($file, PATHINFO_EXTENSION);
$size = filesize($file);
Где $file - путь к файлу.
Можно определять еще на этапе загрузки файла. Тогда в первом случае нужно заменить $file на $_FILES['имя поля файла']['name'], а второе - на $_FILES['имя поля файла']['tmp_name'].

Shitbox2 14.02.2011 00:39

Спасибо большое, попробую. С ПХП года три не работал — все забыл :-(

Shitbox2 20.02.2011 02:50

Функция filesize не понимает кириллицу (на сервере и в ПХП utf-8). Все уже перепробовал и iconv("windows-1251","utf-8",$filename); и urlencode($filename);

Как указать кириллическое имя файла?

<?php
$filename = 'Нужный файл.doc';					
echo strtoupper(pathinfo($filename, PATHINFO_EXTENSION)) . ', ' . filesize($filename)/1024 . ' КБ';
?>

Gvozd 20.02.2011 03:01

Цитата:

Сообщение от Shitbox2
на сервере и в ПХП utf-8

Цитата:

Сообщение от Shitbox2
iconv("windows-1251","utf-8",$filename);

эм?
что за бред?
у тебя страница в UTF-8, и ты конвертируешь в ней строку из win-1251 в utf-8?!
посмотри с помощью scandir в какой кодировке у тебя имена файлы

Shitbox2 20.02.2011 04:16

Блин, вот невнимательный! Конечно iconv("utf-8","windows-1251",$filename); Спасибо :-)

Shitbox2 21.02.2011 00:22

Хм... На локальной машине размер файлов читается, залил на сервер — везде 0 КБ пишет. В чем может быть проблема?

Расширения определяет нормально.

B@rmaley.e><e 21.02.2011 00:34

А файлы открывает? Может быть прав не хватает?

Shitbox2 21.02.2011 00:53

Сам разобрался. Видимо на сервере имена файлов в utf-8, поэтому мое перекодирование utf-8 → win-1251 оказалось лишним. Это что получается, в Винде имена файлов в win-1251, а в Юниксе в utf-8?

Файлы замечательно открываются.

B~Vladi 21.02.2011 09:11

Цитата:

Сообщение от Shitbox2
в Винде имена файлов в win-1251, а в Юниксе в utf-8?

Вообще-то да.

Shitbox2 22.02.2011 13:59

Цитата:

Сообщение от B~Vladi (Сообщение 93402)
Вообще-то да.

И как с этим жить? Форматировать логический раздел под Юникс, а потом обращаться к нему какой-нибудь замысловатой утилитой? Может в Денвере есть подобные настройки?

B~Vladi 22.02.2011 14:39

Цитата:

Сообщение от Shitbox2
И как с этим жить?

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

Shitbox2 23.02.2011 12:26

Файлы могут называться как угодно, я это не контролирую. Думаю вот о чем: можно ли узнавать кодировку имен файлов на сервере (хотя бы ОС сервера)? Тогда можно было бы обойтись одним логическим условием, а код работал бы как на Винде, так и на Юниксе.


Часовой пояс GMT +3, время: 00:59.