Загрузка файла в переменную
Всем привет. Сразу говорю, далеко не знаток JS. :)
Интересует такой вопрос, реально ли с помощью JQuery загрузить файл, но не загружать его на сервер. Тоесть считать его в переменную JS. |
Если пользователь сам выберет файл который он хочет загрузить, то вроде это возможно с помощью HTML5 File API
Полностью не уверен, поэтому лучше загуглите на эту тему, заодно можете поискать и плагин jQuery который это позволяет. Просто же загрузить произвольный файл не получится, если только не использовать всякие дыры безопасности браузеров |
Ну это понятно, что пользователь сам выбирает файл. Html 5 не прокатит. Нужно решение, которое работало бы и старых версиях браузеров.
|
Цитата:
Ну если среди ваших клиентов некрофилы(aka офис-планктон и некрофилы) то вам и разбираться с этой проблемой. Я не вижу решения этой задачи в старых браузерах, и навря ли она есть(без взлома безопасности) Я не вижу проблемы в том чтобы для современных фич, ограничивать поддержку только современными браузерами |
В этом я с вами полностью согласен. Только к сожалению у нас есть любимое государство. Которое установило, что данный сайт должен работать, начиная от IE 6. :-/
|
Цитата:
Не впутывайте в это остальных, и тем более Насть) Ну в IE можно использовать ActiveX, но для этого пользователь должен сам поставить этот ActiveX, либо разрешить права стандартным ActiveX. К сожалению с точки зрения браузера это огроменная дыра в безопасности. Хотя не исключаю, что есть еще какие-то инструменты, о которых я не знаю, так что гуглите, ищите |
Я так люблю свою страну, но ненавижу государство. :)
Прочитал, что можно JSом послать запрос к SWF, который вернет обратно прочтенные данные. Но мало чего нашел по этой теме в интернете. Ничего не слышали про такой вариант? P.S. Насти, обычно девочки хорошие, больше впутывать их не буду. :) |
Цитата:
Цитата:
Цитата:
Цитата:
|
ActiveX - это компилированные бабилотеки, функциональность который доступна из JS в брауезрах IE
Microsoft.XMLHTTP например по-умолчанию доступен. Но бывают ActiveX И с другими методами/задачами. Например есть класс для работы с файловой системой(для HTTP_протокола заблокирован) В общем чтобы получить такую функциональность надо либо чтобы пользователь дал в настройках брауезра права на выполнение других ActiveX, либо установил ваш с нужными вам методами |
Цитата:
http://javascript.ru/unsorted/bridge-to-flash Только сначала узнайте, может ли flash загрузить файл в строку наверно может, если пользователь его выбрал |
Gvozd, спасибо за ответ
|
Да. Может. =) Мост такой написал.
Теперь другая проблема появилась. Загружаю я через flash файл, передаю его в js. Обрабатываю. А теперь вопрос как передать его на сервер? Файлы могут быть до 20мб. Данные закодированны в base64. Пробывал через ajax. У POST есть ограничения на размер передаваемого файла. И к тому же base64 корявится (точно удаляются +, может и еще что-то). Как поступить в данной ситуации? |
Oleg_Antonov,
вроде есть возможность передавать файлы через iframe - просто слышал, может быть нельзя, но 20мб это очень много :) |
|
Цитата:
|
Цитата:
Цитата:
Когда вы передаете через AJAX(чистым JS, не используя библиотек вроде jQUery) POST-запрос, то вы должны его верным образом закодировать. http://htmlbook.ru/html/form/enctype Если вы не закодировали данные в каком-то из вариантов, то сервер все равно будет пытаться раскодировать в соответсвии с заголовками и своими настройками. Я практически уверен, что в вашем случае сервер просто взял и раскодировал символы + в символы пробела(остальные символы не были тронуты) Цитата:
Просто сгенерите длинную строку в 20 мегабайт, из одних букв A, к примеру И пошлите ее на сервер, и посмотрите, полностью ли ее принял сервер. 2) Создать форму. Добавить в одно ее текстовое поле пришедший файл в base64 засабмитить форму в скрытый фрейм. на сервере распаковать base64 3) посмотреть что есть во flash-е по этой задаче, как предложил dmitriymar |
Часовой пояс GMT +3, время: 04:29. |