Ajax определить размер файла input file

123
psylosss
На сайте с 23.12.2005
Offline
126
#11
malls:
Нет заявлений более убедительных чем нелепые.

Ну-ну. Читаем что по ссылке, которую вы дали:

Granted this solution only works with FireFox/Mozilla. And the user has to change a setting in "about:config" and accept the advanced access privileges.

То есть некий браузер дает возможность аплоадить своими встроенными средствами файл, дает интерфейс для JS для этой фичи, и уже становится постулатом, что через AJAX можно грузить файлы. Самим-то не смешно?

Еще раз повторяю: AJAX не позволяет загружать файлы на сервер. Есть способы обхода ограничения. Самый популярный - создание iframe. Упомянутый jquery использует именно этот способ.

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

То же самое относится к ТС:

psylosss не прав. Я загрузку реализовал через JsHttpRequest, тоесть конечно в связке с php
Веб-разработка. Сложные проекты. Проектирование. Проект-менеджмент. Стартапы.
malls
На сайте с 08.08.2005
Offline
255
#12
psylosss:
Самим-то не смешно?

А PHP не дает возможности выводить данные в консоль. Есть правда способ обойти это ограничение, например через echo, print и т.д. Но из этого ничего не следует.

Посмеемся вместе?

ЗЫ: Давайте расставим точки над ё - если технология позволяет (не важно каким способом) получить результат, то и этого однозначно следует что технология НЕ ИМЕЕТ органичений в достижении данного результата. И все прочие мудрствования вокруг этого - не более чем флуд.

Или Вы считаете что ВСЕ функции ВСЕХ языков программирования это не есть по сути различные способы обхода, различных узких мест? Вам только документированые в оригинальных источниках подавай? И пока тот же jquery не превратится в неотъемлимую часть JavaScript (а к тому ИМХО идет), вы будете упорно утверждать что JS ЭТОГО не может?

З
На сайте с 24.04.2008
Offline
54
#13

Вот людям нравится спорить...

Короче говоря, единого, рабочего для всех браузеров способа прочитать размер файла в инпуте на стороне клиента средствами JS+HTML нет. На самом деле даже отправка файла на сервер только для проверки его размера - полная ерунда, особенно если файл весит больше метра.

[Удален]
#14
psylosss:

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

То же самое относится к ТС:

http://www.captain.at/ajax-file-upload.php а это что по твоему тогда?

З
На сайте с 24.04.2008
Offline
54
#15
KosoyRoman:
http://www.captain.at/ajax-file-upload.php а это что по твоему тогда?

Вы наверное не читали процитированные слова на английском. Попробуйте сделать это браузером, отличным от Mozilla Firefox. Решение, работающее только в одном браузере в определенных условиях - не решение.

psylosss
На сайте с 23.12.2005
Offline
126
#16
KosoyRoman:
http://www.captain.at/ajax-file-upload.php а это что по твоему тогда?

Об этом у уже писал выше

psylosss добавил 28.01.2009 в 18:33

malls, это все пустой флуд. Я попросил показать кусок кода, позволяющий делать то, о чем вы заявили. В популярных браузерах, без танцев с бубном вокруг безопасности. И на чистом AJAX без ифреймов. Слабо?

[Удален]
#17

Ладно, бесполезно с вами спорить тут, время только терять, да и собственно тема не о этом, а о том как выявить размер загружаемого файла перед отправкой. Всё равно уже решил задачу. ) так что свои мнения держите при себе, если не реализуется в мазиле это не значит, что задача не осуществима вообще, не о кросбраузерности речь шла, а о способе. Вопрос закрыт, спасибо за помощь всем. psylosss отдельный респек.

KosoyRoman добавил 28.01.2009 в 18:39

psylosss в том то и дело что вся заноза в безопасности ) возможно ты не так всё понял ) я сам именно этим вопросом и интересовался.

psylosss
На сайте с 23.12.2005
Offline
126
#18

KosoyRoman, ну ежели хоть как-нибудь, да с отключением безопасности в браузере, то наверное есть способы (минимум два выше нашли). Только не гуд это. Юзайте swfupload, там на раз-два все делается.

А суть обоих вопросов в одном - как через JS получить доступ к локальному файлу. Если есть этот доступ, то конечно его и аплоадить можно, и размер посчитать, и даже изменить, если права есть. Но только в 99,999999% случаев этого доступа нет, если только какой-нибудь экспериментатор не прибьет систему безопасности браузера.

Skom
На сайте с 02.12.2006
Offline
165
#19

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

Ибо он получает Content-length до начала своего исполнения.

А всякая мишура, навроде прогресс-баров, прикручивается уже с помощью аяксов и пр.

Т.е. отправляем файл перловому скрипту, который первом делом пишет либо в сессию, либо тупо в файл размер аплоада.

А уже аяксом с пхп читаем этот файл и получаем его размер.

Cras amet qui numquam amavit quique amavit cras amet
T.R.O.N
На сайте с 18.05.2004
Offline
314
#20
psylosss:
использованием асинхронной загрузки файла на сервер

асинхронной загрузки файла хоть с фреймами хоть без - небывает. Отправка формы <FORM> независимо POST/GET - всегда интреактивна, а следовательно - синхронна.

KosoyRoman:
а о том как выявить размер загружаемого файла перед отправкой

можно получать но не перед, а в самом начале отправки.

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

1. Отправляем форму с файлом и запускаем AJAX запросы к серверу по таймеру, допустим каждые 5 секунд.

2. Серверный скрипт, получающий файл, начинает его получать и записывать, одновременно получив информацию о размере входного буфера. (В этом случае, размер буфера равен размеру файла).

3. Серверный скрипт к которому обращается AJAX запрос, возвращает итоговый размер файла и полученный объем для термометра загрузки.

4. Если объем файла больше допустимого, обрываем отправку файла и чистим входной буфер сервера.

T.R.O.N добавил 28.01.2009 в 21:22

Skom:
Ибо он получает Content-length до начала своего исполнения.

Вы правы, но фраза просто пипец... Исполняемый скрипт что-то получает до начала исполнения. Начали умничать, пишите правильно. Content-length - серверная переменная..., а перл и прочее - это уже потом.

P.S. - флешовые способы пробовал, непонравились. AJAX - все проще и надежней

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий