Как узнать размер файла на сервере
На сервер файл загружается через скрытый iframe, на сервере проверяется расширение и размер файла. Как можно проверить расширение и размер на клиентской стороне, чтобы пользователь на ждал загрузки а потом только узнавал, что его файл нельзя загружать?
2,545 21 21 золотой знак 58 58 серебряных знаков 104 104 бронзовых знака на сервере можно посмотреть Content-Length и не загружать, если выходит за лимитВ html5 была добавлена поддержка File API – с помощью которого можно получить имя, размер и MIME тип выбранного файла ещё до загрузки его на сервер.
У объекта DOM <input type="file" ..> , после выбора пользователем файла, можно считать свойство files – объект FileList – содержащим объекты File .
У File есть свойства size , name и type . В нашем случае выбирается всего один файл, сразу его и берём:
30.4k 3 3 золотых знака 44 44 серебряных знака 81 81 бронзовый знакУ элемента <input> есть параметр value . В этом параметре находится полное название файла, включая расширение:
Размер файла без предзагрузки через флеш, через FileReader @Grundy
Не надо проверять расширение файла, по-хорошему надо проверять его тип (проверятся так же как и размер, только не size , а type ).
А расширение файла, если этого требует безопасность, надо на сервере заменять на корректное.
В новой спецификации можно полностью контент файла на js получить, но работать будет не везде, а только где FileReader есть:
Однажды пришлось считать хэш от содержимого файла на клиенте, делал примерно так:
Вот это sBase64Data содержимое файла в base64. Тут можно и размер посчитать.
А экстеншен, понятно только по имени узнать можно, иначе никак:
UPD
Так же не стоит забывать про атрибут accept, там можно и расширения допустимые для файла указать. Чтобы уже в скрипте голову не марочить.
Начнем с того, что определим, что же расшарено. Задача проста: просто осуществляем запрос класса Win32_Share, чтобы использовать Windows Management Instrumentation (WMI). Вам даже не нужно логиниться на файловом сервере. Вы можете запустить эту команду откуда угодно.
Вместо chi-fp01 укажем имя интересующего нас компьютера
Запустив эту команду Вы получите все сетевые папки, включая принтеры (если таковые имеются). Но так как мы говорим о файловых шарах, то давайте ограничим запрос. Все экземпляры Win32_Share имеют свойство Type, как показано в таблице 1.
Добавим фильтр в первоначальную команду:
Тем самым мы выводим только нужную информацию.
Но если вы ищите также и скрытые папки – те, которые заканчиваются знаком доллара ($) – фильтр придется слегка переписать:
В WMI знак процента (%) используется вместо знака подстановки (wildcard). Вывести все папки, кроме тех, которые скрыты чуть сложнее.
Команда выведен все объекты Win32_Share, у которых свойство Type равно 0 и имя не заканчивается на $.
Получаем размер сетевой папки
Довольно часто необходима информация о том, сколько места занимают файловые шары. Используем Get-ChildItem, или его сокращение dir, и передадим результаты в Measure-Object:
В итоге вы получите информацию об общем числе объектов, размер в байтах, наименьшие и наибольшее размерах файлов. В предыдущей команде, применил фильтр. В PowerShell 3.0 то же самое можно сделать проще, однако та команда, которую я использовал, работает как v2.0, так и 3.0. Ее лучше всего запускать локально. Код в примере 1 комбинирует эту команду с нашей техникой WMI, чтобы получить отчет о размере высокоуровневых папок.
Пример 1: Отчет о размерах высокоуровневых сетевых папок
Вы можете форматировать или обрабатывать $results как вашей душе будет угодно. Нужна удобоваримая таблица? Просто используйте следующую команду:
Тем самым можно сделать полный отчет по использованию всех папок на файловом сервере не составляет труда. Сэкономьте время, воспользуетесь примером 2.
Пример 2: Отчет об использовании файловых шар
И снова я слегка отформатирую таблицу.
Получаем файлы по владельцу
Двигаемся дальше – найдем владельцев файлов. Если вы используете квоты, отчеты уже наверняка получаете. В противном случае, все, что вам нужно – это извлечь ACL файла, который включает в себя владельца, и агрегировать результаты. Лучше всего добавить владельца файла в качестве кастомного свойства
Мы можем группировать по свойству нового владельца и затем обрабатывать новый объект.
Пара усилий и вы можете применить тот же подход к файловой шаре, как указано в коде примера 3.
Пример 3: Группируем файловые шары по владельцу
Я также должен указать на то, что могут проблемы: с файлами, имя которых более 260 символов или содержит необычные символы, особенно если вы пытаетесь запустить Get-ACL. В PowerShell 3.0 этот командлет имеет параметр -LiteralPath, что помогает решить вышеуказанные проблемы.
Опять выведем читаемую таблицу.
Получаем файлы по дате создания
дает вывод, представленный на скриншоте ниже.
Лично я считаю, что лучше использовать LastWriteTime, который обозначает, когда к файлу в последний раз обращались. Мне встречались ситуации, когда LastAccessTime обновлялся через сторонние программы, например, антивирус, что само по себе уже не означает правды. И LastAccessTime был деактивировал еще со времени Windows Vista, хотя вы можете его включить. Вам также нужно быть осторожным, потому что эти значения могут меняться в зависимости от того, копируете ли вы или перемещаете файлы между дисками (between volumes). Но вы можете решить это сами. Используя этот файл как пример, мы может заставить PowerShell сказать нам, насколько стар файл. См. пример 4.
Пример 4. Определяем возраст файлов
Свойство Age является объектом TimeSpan, и свойство Days является просто свойством TotalDays этого объекта. Но так как мы можем этом сделать для одного файла, мы можем сделать и для других Давайте взглянем на мою общую папку и найдем все файлы, которые не менялись за последние 400 дней.
Я пойду дальше и включу еще и владельца файла. На скриншоте ниже показаны результаты от запуска этого код в удаленной сессии на моем файловом сервере.
Я могу сохранить эти результаты в переменную и использовать их в любое время. Так как у меня есть полное имя файла, передать в другую команду, например, Remove-Item, не составит труда.
Одной из моих любимых техник является определение того, сколько файлов было изменено за год.
Как вы можете видеть на скриншоте, все выглядит причесано. Нужны детали? Можно проанализировать свойство Group, которое представляет собой коллекцию файлов.
Полезно знать, сколько файлов не изменялось за 30, 90 или 180 дней. К сожалению, простого способа использовать Group-Object для этого не существует, поэтому мне необходимо придется «пойти иным путем»; смотрите пример 5.
Пример 5: Определяем период изменения файлов
На рисунке ниже показан результат, когда я запустил этот код для папки с моими скриптами, которая, как я знаю, имеет плотное распределение по возрасту (decent age distribution). Мой код не включает в себя актуальные файлы, но это было бы слишком сложно изменить мой пример.
За основу поста использована первая часть статьи File Server Management with Windows PowerShell.
Кстати, о том, как найти файлы с помощью PowerShell и WMI Джеффри Хикс пишет в своем блоге (часть 1 и 2).
Как проверить существование файла на удаленном сервере?
Как проверить существование файла на удаленном сервере? конструкция: if.
Определить размер файла на сервере по имеющейся ссылке
Здравствуйте форумчане Суть задачи - определить размер файла на сервере по имеющейся ссылке .
Размер файла на удаленном сервере
Добрый день помогите я пытаюсь получить размер файла получаю но проблемма в том что при первом.
javascript тут не при делах
обращайтесь на форум PHP, спросите там про file_get_contents
но и средствами PHP вы сможете получить лишь количество символов в коде * 4 байта ,
а вот размеры всех и всяческих картинок/фонов/объектов внутри файла получить затруднительно
(не хочу мусорить чужими ссылками на этом форуме) Вы хотите сказать, что указав ссылку на файл, вам без перезагрузки страницы выводится его размер? Так тут и вашего примера не нужно. Ссылка ajax-запросом отправляется на сервер, там серверным скриптом (тем же php) обрабатывается, вычисляется размер файла (сокеты, curl) и возвращается ответом.
Lazy_Den, имхо, топикстартер хотел сказать, что где-то он видел страницу, на которой имеется статический список ссылок, напротив каждой из которой указан полный размер файла по ссылке
полагаю, что для этого вряд ли использован ajax-запрос, всё изначально делается на сервере на одном из серверных языков
и я указал топикстартеру, что на серверном языке вполне возможно определить размер самого файла, но, если это HTML-файл, то будет определён только размер собственно файла, а вот размеры подключаемых в этом HTML-файле изображений, CSS и JS-файлов, а также встроенных объектов определить и просуммировать с собственным размером HTML-файла будет нельзя
Вы хотите сказать, что указав ссылку на файл, вам без перезагрузки страницы выводится его размер? Я не утверждаю, не утверждаю и про метод, возможно и ajax, а лишь знаю что через ссылку на файл скрипт получает размер и выводится информация в нужном месте.Вот посмотрите - это пример - _biblprog точка org точка ua/ru/google_chrome/
Там прямые ссылки на программы. в хеадере скрипт - scripts_ru.js, в нем внизу написано:
Что это значит я не знаю. но примерно догадываюсь что это одна из деталей того самого скрипта для определения размера..
Мне просто нужен такой скрипт и способ его применения, спрашиваю лишь потому что сам написать его не способен. То, о чем я и говорил. Именно эта часть - это скрипт ajax-запроса. Вторая часть "марлезонского балета" - серверная, написанная на php. Именно эта часть - это скрипт ajax-запроса. Вторая часть "марлезонского балета" - серверная, написанная на php. Спасибо, хоть одно из всего остального выяснилось.
А есть решения первой и второй части того самого "марлезонского балета"?
первая часть не нужна - указанный вами сайт "ключница делала"
javascript нужен при динамике - если бы ссылки формировались на странице юзером
а для статики всё можно и нужно делать на сервере
а вот вторая часть - серверная
и куда обратиться по этому вопросу, я вам выше уже указывал
Я понимаю ваш ответ, но написал на этом форуме свой вопрос лишь потому что не знаю и не умею применять все что можно найти в гугле по этому вопросу.
Мне нужно решение вопроса знающим человеком. вот собственно и потому я тут.
На всякий случай, применять собираюсь на движке DLE. В общем, создаете файл с формой или достаточно будет просто текстовое поле, какая-нибудь кнопка и элемент для вывода результата.
В этот файл записываем JS и не забудьте перед этим саму библиотеку jQuery подключить:
Вроде бы даже в песочнице работает. Можете попробовать побаловаться.
Добавлено через 23 минуты
Спасибо вам большое за то что не поленились и помогли! Ценю вашу помощь.
Но все же есть некоторые сложности с выводом:
Размер выводится только по клику, а надо автоматически. и если можно с кешем до изменения ссылки, что бы избежать постоянные запросы при посещении страницы.
Размер определяется так - Размер файла: 285184 байт, а желательно вот так - (36.8 MB).
И важный момент, ссылка вставляется в доп. поле, и выводится именно переменной доп поля вида - [xfvalue_file]
Спасибо.
Это можно как то решить?
Я ни в коем не наглею, но спосить даже такое элементарное больше негде.
Добавлено через 12 часов 35 минут
Спасибо всем! Реализовано. Можно закрывать.
Чтение файла, расположенного на удаленном сервере
Собственно необходим кусок кода, который это делает. Зарание спасибо. П.С: помню, в паскале были.
Закачка файла по прямой ссылке
Всем привет, я не уверен был, где создавать тему, поэтому создал здесь. Мне нужна помощь в.
Отдача файла не по прямой ссылке
Здравствуйте! Необходимо отдать файл не по прямой ссылке. Алгоритм, который хочу получить: 1.
403 forbidden для файла по прямой ссылке
Очень прошу помочь советом знатоков ;) По прямой ссылке на любой файл (не картинка) появляется.
Привет, сегодня хочу рассказать о том, как же, все-таки, из консоли или по удаленке через ssh узнать размер папок или файлов linux.
Именно с такой задачей столкнулся, когда нужно было посмотреть, кто же больше всех занимает места в корпоративном файлхранилище.
Данная операция может быть ресурсоёмкой при большом количестве файлов. И чтобы не заморачиваться, приведу примеры со своей рабочей машины.
и в этом нам поможет замечательная команда du.
Смотрим размер моей рабочей папки на диске home:
Если набрать просто du или du -h, то на терменал выведутся рамеры всех вложенных папок и файлов. Так что так лучше не делать.
Если нужно узнать размеры всего содержимого в каталоге, тогда заходим в него и выполняем следующую команду:
Самвол * означает, что нужно выбрать все файлы в папке.
Сортируем папки по размеру:
10 идей о “ Как посмотреть размер папок и файлов в консоли Linux ”
А почему нельзя было использовать просто команду ls вместо du ?
Например команда ls -l -S выведет содержимое директория в отсортированном виде от большего к меньшему по размеру и имени (вместе с директориями и размером содержимого). Так же есть общий размер текущей директории и входящих в неё.
Дополним параметром -h и размер будет показан как в байтах, Кбайтах и Мбайтах, если таковые имеются. ls -l -S -h
Ну а если добавить еще параметр -R тогда будет подробно покеазан каждый поддиректорий начиная с текущего. ls -l -S -h -R
я просто показала еще один способ. Каким пользоваться, решай сам
Удобнее -s тем, что общий размер так же выводит.
Так же можно с сортировкой выводить как в твоих примерах.
Вы правы. Если найдете еще способ, буду рад.
sisadmin@sisadmin-linux пишет нет такой команды
$ du -s *| sort -nr
sisadmin@sisadmin-linux: команда не найдена
kkk@333
$ /home du -sm *| sort -nr
bash: /home: Это каталог
kkk@333
$ /home $ du -sm *| sort -nr
bash: /home: Это каталог
du -s * | sort -nr | cut -f 2- | while read a; do du -hs $a; done
$a нужно взять в кавычки, чтобы не было проблем с пробелами в путях.
Михаил, копируйте команды, а не вывод консоли:
du -s *| sort -nr
в моем комменте выше важно $a взять в вертикальные двойные кавычки, а не такие, как я указал выше.
Админ, а лучше исправьте их в комменте выше, а этот коммент удалите.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Читайте также: