Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Получение размера и типа файла с сервера (https://javascript.ru/forum/jquery/56569-poluchenie-razmera-i-tipa-fajjla-s-servera.html)

casper-man 23.06.2015 10:29

Получение размера и типа файла с сервера
 
Приветствую Вас о великие ГУРУ JavaScript'инга... У меня к вам маленькая просьбачка... По ссылке на файл определять тип(разрешение) файла и его размер. С типом разобрался, а вот размер как взять ума не приложу... Проскакивал через инфу что AJAX запрос может дать мне размер, но как это сделать?!??!?! ВЗРЫВ МОЗГА... курю гугл уже второй день.... не помогает(((

casper-man 23.06.2015 10:32

опа... я похоже промахнулся с веткой форума... не казните сильно, мозг уже подзасох... модераторы не сочтите за наглость перенесите тему в нужный раздел. просто у меня нет таких полномочий

laimas 23.06.2015 10:41

Цитата:

Сообщение от casper-man
По ссылке на файл определять тип(разрешение) файла и его размер.

А что проблематично эту информацию о файле сразу указывать, к примеру в теге title, сервером сразу при формировании ссылки, если она необходима?

casper-man 23.06.2015 10:49

ссылка формируется не сервером, а пишется пользователем не сведующем во "всяких таких не понятных штуках"... плюс 1-е таких ссылок уже очень много и переделывать их ручками долго, 2-е так сказал BOSS...

laimas 23.06.2015 13:10

И куда, и кому эта ссылка от пользователя попадает, или так и болтается у клиента?

Если это ссылка на внешний ресурс, то без получения содержимого размер его нельзя знать.

casper-man 23.06.2015 13:27

немного уточню... На сайте нашей больницы (под управлением UCOZ) имеется некое множество страниц со статическим контентом который содержит ссылки на документы или архивы с документами(которые время от времени обновляются) хоронящиеся на том же сервере. Так вот нужно получить размер этих самых файлов и влепить его к ссылке типа: Устав ЦГБ [1,25 Mb]

laimas 23.06.2015 14:47

А этот ответ тогда как понимать ссылка формируется не сервером, а пишется пользователем, если файлы не чужие а свои?
Получить информацию о файле может любой серверный язык, а вот как у вас там ссылки вставляются и кем, разбирайтесь, сделаете этот процесс нормальным, значит будете владеть информацией.

ksa 23.06.2015 15:28

Цитата:

Сообщение от casper-man
имеется некое множество страниц со статическим контентом

Статичный контент на то и статичный, что он не меняется... ;)
Как вариант, можно рассмотреть два решения
1. Формировать контент динамично на сервере, указывая размеры файлов
2. Вешать на каждую страницу скрипт, который будет запрашивать размер файлов у сервера, после чего отображать его на странице

laimas 23.06.2015 15:51

Цитата:

Сообщение от ksa
Вешать на каждую страницу скрипт, который будет запрашивать размер файлов у сервера, после чего отображать его на странице

Ну зачем. Если кто-то добавляет, то кто-то и принимает эти данные, и значит принимать можно не по FTP (если так), а по HTTP, находить ссылки (а если все-таки через форму и BB-теги, то упрощается) и рег. разбором добавлять в title информацию о файле. Это нужно будет делать один раз, а не дергать по пустякам сервер постоянно.

ksa 23.06.2015 16:11

Цитата:

Сообщение от laimas
Это нужно будет делать один раз

Какой "один раз" если
Цитата:

Сообщение от casper-man
ссылки на документы или архивы с документами(которые время от времени обновляются)


casper-man 23.06.2015 16:14

не поймите меня превратно, но контентом на страницах занимается "баран" которому вбить в голову что можно при добавлении файла всё корректно оформить и забыть к сожалению не возможно, кроме того эти "бараны" меняются как перчатки у светской дамы... и за каждым потом исправлять... убейте меня сразу!!! Мне проще заставить "барана" дописать в ссылку id=url-doc, а остальное сделает скрипт.

laimas 23.06.2015 16:53

которые время от времени обновляются, а не постоянно, а вот клиент в любом случае будет постоянно дергать сервер.

laimas 23.06.2015 16:55

Цитата:

Сообщение от casper-man
не поймите меня превратно, но контентом на страницах занимается "баран" которому вбить в голову

Да хоть негр, серверный скрипт должен выделять нужное и сохранять его в определенном формате, кот там отправляет не имеет значения.

casper-man 23.06.2015 19:44

Цитата:

Сообщение от laimas (Сообщение 376269)
которые время от времени обновляются, а не постоянно, а вот клиент в любом случае будет постоянно дергать сервер.

я вас умаляю... это сайт больницы.... кроме министерства и других контролирующих органов он ни кому не нужен... но БОСС велел, и значит надо сделать.... позитивчик...позитивчик...по зитивчик
Цитата:

Сообщение от laimas (Сообщение 376271)
Да хоть негр, серверный скрипт должен выделять нужное и сохранять его в определенном формате, кот там отправляет не имеет значения.

я немного не вкурю... уже не первый раз речь идёт о серверном скрипте... имеется ввиду, что он будет срабатывать при нажать кнопки "сохранить" или что-то типа того? не много не понятно как это сделать на ЮКОЗ сайте...
Цитата:

Сообщение от Rise (Сообщение 376266)
casper-man, может так без jquery, с jquery.

с jquery пробовал, и что-то я там не отдуплил... сейчас попробую без jquery

laimas 23.06.2015 19:54

Сайты работают не за счет юкозов и джумл, а за счет серверных скриптов, разбираетесь в них?

Принимая форму срипт вашего юкоза просто обязан проверять есть ли файл по ссылке указанной кем-то "неадекватным", а заодно получить и прописать параметры этого файла.

Возлагать на клиентскую сторону задачу "загрузи, узнай сколько весит и сообщи пользователю", это называется... говорить не буду как, но думаю медицине будет понятно о чем речь.

casper-man 25.06.2015 12:06

ок... в таком случае вопрос возникает следующий... мы имеем TEXTAREA в котором есть какой-то текст, не интересующие нас ссылки и интересующие нас ссылки. Вопрос... как мне в TEXTAREA найти ссылку с нужным ID и произвести в ней изменения: добавить атрибут и например текст

casper-man 25.06.2015 12:38

Цитата:

Сообщение от Rise (Сообщение 376535)
casper-man, Ctrl + F

ахахахахахахаха...:lol:

это вообще безотказный вариант, ни тебе багов, ни тебе лагов... вот только одно но... вот надо чтобы ссылки из
<a id="url" href="file.doc">link</a>
становились вот такими
<a class="doc file-ico" id="url" href="file.doc">link<br>Скачать  Текстовый документ MS Word 2003 (<b>doc [23.2 kB]</b>)</a>


у меня почти готовый вариант был готов, но он обрабатывал ссылки на странице. Ранее в теме ГУРУ посоветовал не грузить сервак такими глупостями и сделать серверный скрипт который делал что мне нужно не каждый раз как кто-то зашёл на страницу, а при сохранении изменений в HTML редакторе (если я правильно понял профессора laimas)

ksa 25.06.2015 13:28

Цитата:

Сообщение от casper-man
надо чтобы ссылки из
<a id="url" href="file.doc">link</a>

становились вот такими
<a class="doc file-ico" id="url" href="file.doc">link<br>Скачать  Текстовый документ MS Word 2003 (<b>doc [23.2 kB]</b>)</a>

Так на сервере или таки после обработки страниц клиентским скриптом? :D

casper-man 25.06.2015 15:11

ksa, со слов laimas сервак будет напрягаться за зря каждый раз при входе клиента на страницу где скрипт будет обрабатывать ссылку. Этот вариант у меня почти был закончен, не получалось только полученный размер втулить в ссылку. А на сервере я вообще пока не пойму как мне найти именно тот кусок текста из TEXTAREA который мне нужен и перепилить его тут-же в поле редактора перед созхранением.

ksa 25.06.2015 15:26

Цитата:

Сообщение от casper-man
сервак будет напрягаться за зря каждый раз при входе клиента на страницу

Ну это кагбэ его основная работа... :D

Что предлагал laimas, только наверное сам laimas и поймет... :)

Я вот не пойму и тебя...
Ранее ты писал о статичных страницах с сылками на документы... Теперь у тебя фигурируют какие-то "TEXTAREA". :blink:

Для статичных страниц, дабы никого (кроме сервера на напрягать), я цеплял бы к ним скрипт, который:
- пройдет по ссылкам
- соберет имена файлов с их путями
- запросит сервер по их размерам
- преобразует ссылки к нужному виду

Т.о. никто из участников даже не заметит "усложнений" в своей работе.

casper-man 25.06.2015 16:10

Цитата:

Сообщение от ksa (Сообщение 376564)
Ну это кагбэ его основная работа... :D
Ранее ты писал о статичных страницах с сылками на документы... Теперь у тебя фигурируют какие-то "TEXTAREA". :blink:

Сайт на UCOZ, там есть стат.страници которые можно редактировать только встроенным редактором. и HTML код в TEXTAREA.
Цитата:

Сообщение от ksa (Сообщение 376564)
Для статичных страниц, дабы никого (кроме сервера на напрягать), я цеплял бы к ним скрипт, который:
- пройдет по ссылкам
- соберет имена файлов с их путями
- запросит сервер по их размерам
- преобразует ссылки к нужному виду

Т.о. никто из участников даже не заметит "усложнений" в своей работе.

Всё именно так и задумывалось)))...

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

если я не совсем ясно объяснил, то вот страница примера

такой код
<a id="url" href="http://dongb.ru/file/pril6.zip">pril6.zip</a>
          <a id="url" href="http://dongb.ru/file/1-0001.jpg">1-0001.jpg</a>
          <a id="url" href="http://dongb.ru/file/tp_2014.docx">tp_2014.docx</a>
          <a id="url" href="http://dongb.ru/file/2199-r_perechen.pdf">2199-r_perechen.pdf</a>
          <a id="url" href="http://dongb.ru/file/price/prejskurant_01_10_2013.doc">prejskurant_01_10_2013.doc</a>

обрабатывает такой скрипт
$("a#url").each(function(indx, element) {
  var file = $(this).attr("href");
  var parts, ext = (parts = file.split("/").pop().split(".")).length > 1 ? parts.pop() : "";
  $(this).addClass(ext + " file-ico");  
  var type_file = "файл";
  if (ext == "doc") {
	  var type_file = "Текстовый документ MS Word 2003";
  }
  if (ext == "docx") {
	  var type_file = "Текстовый документ MS Word 2007";
}
if (ext == "rtf") {
	  var type_file = "Текстовый документ MS WordPad";
}
if (ext == "xls") {
	  var type_file = "Табличный документ MS Exel 2003";
}
if (ext == "xlsx") {
	  var type_file = "Табличный документ MS Exel 2007";
}
if (ext == "pdf") {
	  var type_file = "Документ Adobe Acrobat Reader";
}
  $(this).append("<br>Скачать  " + type_file + " (<b>" + ext + "</b>)");
$(this).addClass("curr");
 url = $("a.curr").attr("href");
 var request,sizen;
 request = $.ajax({
 type: "HEAD",
 url: url,
 success: function (data) {
sizen = request.getResponseHeader("Content-Length");
 alert("Size "+url+" is " + sizen);
$("a#url.curr").append(sizen);
 }
 });
    
  $(this).removeClass("curr");
});

laimas 25.06.2015 17:21

Цитата:

Сообщение от ksa
Что предлагал laimas, только наверное сам laimas и поймет...

Я вот не пойму и тебя...
Ранее ты писал о статичных страницах с сылками на документы... Теперь у тебя фигурируют какие-то "TEXTAREA".

Для статичных страниц, дабы никого (кроме сервера на напрягать), я цеплял бы к ним скрипт, который:
- пройдет по ссылкам
- соберет имена файлов с их путями
- запросит сервер по их размерам
- преобразует ссылки к нужному виду

Т.о. никто из участников даже не заметит "усложнений" в своей работе.

Тогда для обоих: :)

Если в форме разрешено добавление ссылок типа "а-ля <a href=...>", то это плохо. Если разрешена вставка ссылок посредством BB-тегов, это нормально. Хотя небо не упадет если и непосредственно теги разрешены, вот только работы серверу по приему формы будет невпроворот. Так или иначе, принимая форму с текстом, нужно пройтись в нем функцией preg_replace_callback, найти ссылки, проверить наличие указанных файлов, если нет, ссылка выбрасывается (или выдается ошибка клиенту, или клиент посылается на..., или др. варианты), если есть, значит получаем размер файла, можно и дату последнего обновления, и эту информацию добавляем в ссылку в тег title.

Что не понятного? Или вы друзья так и будет маяться "дурью", дергая сервер не понятно ради чего? :)

laimas 25.06.2015 20:45

При скачивании по прямой ссылке, размер и так указывается, а если отдается скриптом, то его нужно указывать. Проблемы в этом нет никакой.
Другое дело, чтобы извещать пользователя до того как он будет скачивать файл. Да и вообще, по большому счету это не JS тема, а иного раздела.

casper-man 25.06.2015 22:16

Цитата:

Сообщение от Rise (Сообщение 376584)
laimas, там такая штука есть $FILE_SIZE$ но ТС это неведомо :D

Цитата:

Сообщение от Rise (Сообщение 376583)
casper-man, здесь посмотри как в кнопках это реализовано.

Если бы речь шла о каталоге файлов уж я надеюсь мне хватило бы ума воспользоваться стандартной хренью UCOZ'а $FILE_SIZE$... но речь идёт о модуле "страницы сайта", а тут такой приблуды нет...

ksa 26.06.2015 08:28

Цитата:

Сообщение от laimas
Так или иначе, принимая форму с текстом, нужно пройтись в нем функцией preg_replace_callback, найти ссылки, проверить наличие указанных файлов, если нет, ссылка выбрасывается (или выдается ошибка клиенту, или клиент посылается на..., или др. варианты), если есть, значит получаем размер файла, можно и дату последнего обновления, и эту информацию добавляем в ссылку в тег title.

Твоя идея потерпит крах. Потому как файлы в ссылках обновляются. :) И , записанная тобой информация, не будет отображать реальное состояние.
Цитата:

Сообщение от laimas
Или вы друзья так и будет маяться "дурью", дергая сервер не понятно ради чего?

Ради получения достоверной информации. :D

ksa 26.06.2015 08:31

Цитата:

Сообщение от casper-man
такой код
<a id="url" href="http://dongb.ru/file/pril6.zip">pril6.zip</a>
          <a id="url" href="http://dongb.ru/file/1-0001.jpg">1-0001.jpg</a>
          <a id="url" href="http://dongb.ru/file/tp_2014.docx">tp_2014.docx</a>
          <a id="url" href="http://dongb.ru/file/2199-r_perechen.pdf">2199-r_perechen.pdf</a>
          <a id="url" href="http://dongb.ru/file/price/prejskurant_01_10_2013.doc">prejskurant_01_10_2013.doc</a>

Что ты хочешь получить в итоге? Так же приведи пример хтмля...

laimas 26.06.2015 09:07

Цитата:

Сообщение от ksa
Твоя идея потерпит крах. Потому как файлы в ссылках обновляются. И , записанная тобой информация, не будет отображать реальное состояние.

Вот только не надо чушь пороть :) Сервер и только он принимает и файлы, и тексты со ссылками.

ksa 26.06.2015 14:47

Цитата:

Сообщение от laimas
Сервер и только он принимает и файлы, и тексты со ссылками.

В исходной задаче есть статичные хтмл страницы и какие-то файлы... Все они живут своей жизнью...
От того, что кто-то, когда-то написал хтмл ну никак не влияет на то, что кто-то потом будет менять другие файлы, ссылки на которых уже не меняются...

Т.ч. чуши пока не вижу. :D

laimas 26.06.2015 15:34

Цитата:

Сообщение от ksa
В исходной задаче есть статичные хтмл страницы и какие-то файлы...

Статический, не означает "бесхозный" появляющийся не известно по какой причине на сервере.

Цитата:

Сообщение от ksa
Все они живут своей жизнью...

Такое возможно только тогда, когда весь сервер живет своей жизнью, чего не должно быть.

Ребята, либо вы не представляете какие задачи возлагаются на сервер и поэтому пытаетесь перекладывать серверные проблемы на клиента, либо представляете и просто маетесь тем, о чем я говорил ранее. :)


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