|
|
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
Народ, подскажите, как можно с помощью JavaScript передать файл на сокет. На счет картинки понятно - ее можно передать с помощью base64, а как файл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 14:00 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
а кто мешает использовать base64 картинка от файла ничем не отличается... data:application/bin;base64,.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 14:20 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
А ограничения на размер файла есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 14:38 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
qi_ip, есть , но это надо смотреть настройки сервера но и в это случае никто не мешает передавать файл по частям смотри file API ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 14:56 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
Опять же возвращаюсь к вопросу передачи файлов/картинок через JS и Base64. Передача на страницу картинок/файлов закодированных в Base64 небольших размеров осуществить не сложно. Проблема возникает при передачи файлов закодированных в Base64 больших размеров именно через JS (проблема с оперативной памятью). Подскажите, 1) Как отобразить изображение на сайте большого размера? Если все сразу вытащить в переменную на страницу, браузер выкидывает "Out of memory". 2) То же самое с файлом большого размера. Я так понимаю, можно как-то частями выгружать? Можно ли через JS при нажатии на ссылку загрузки файла сначала открывалось окно выбора места сохранения файла, а уже потом начиналась конвертации Base64 в файл побайтно? Закодированную строку получаю из базы данных. PS: просьба сильно не пинать, так как только начинаю в этом разбираться. Если не сложно, то киньте ссылки на примеры или в каком направлении двигаться. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 15:23 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 16:15 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
На счет FileAPI понятно, но это можно использовать, когда файл уже есть. А я имел в виду именно получение и создание большого бинарного файла. То есть, файл нужно собрать из присланных данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 11:07 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
из данныз формируешь блобы , соединяешь их, применяешь base64. передаешь на сервер. а в общем не понятно задание- что и откуда получается, и что и куда передается. в постах противоричивые данные... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 12:30 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
Так, полная тема: Есть WebSocket, по нему в JS получаю файл (base64). Как его можно правильно преобразовать в большой файл (blob) на стороне клиента. С небольшими файлами проблем не возникает, но при больших файлах (> 20 МБ) браузер крешится при конверте Base64 в Blob. Возможно можно как-то собрать файл по частям, не нагружая сильно оперативу. Может быть можно аппендить несколько Blob (не нашел как) Как вариант для хранения сконвертированного файла рассматривал сохранение в IndexedDb. Если коротко, то нужно получить большой файл по вебсокету (формат Base64), преобразовать на стороне клиента в файл (Blob) и отдать пользователю. Вот, как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 12:51 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
я вот таким образом получаю файл по websocket p - это и есть строка base64 Код: javascript 1. 2. 3. правда, у меня файлы не большие... вот пример использования blob для формирования строки для передачи по websocket на сервер Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. для тебя будет интересна последняя строка - собрать один blob из нескольких.... но при больших передачах крашиться может из-за ограничения по объёму разовой передачи по websocket у меня - 16мег стоит. но websocket может передавать и бинарные файлы - сокращение трафика и времени на передачу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 13:33 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
вадяя вот таким образом получаю файл по websocket p - это и есть строка base64 Код: javascript 1. 2. 3. правда, у меня файлы не большие... вот пример использования blob для формирования строки для передачи по websocket на сервер Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. для тебя будет интересна последняя строка - собрать один blob из нескольких.... но при больших передачах крашиться может из-за ограничения по объёму разовой передачи по websocket у меня - 16мег стоит. но websocket может передавать и бинарные файлы - сокращение трафика и времени на передачу То есть, можно на стороне клиента получать бинарный файл? А как его обработать? Опять же получается. что все будет накапливаться в оперативке и при большом файле опять же крешниться. Есть какие-то нюансы при передачи/получении через WebSocket на клиент бинарный файл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 13:45 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
qi_ipТак, полная тема: Есть WebSocket, по нему в JS получаю файл (base64). Как его можно правильно преобразовать в большой файл (blob) на стороне клиента. С небольшими файлами проблем не возникает, но при больших файлах (> 20 МБ) браузер крешится при конверте Base64 в Blob. Возможно можно как-то собрать файл по частям, не нагружая сильно оперативу. Может быть можно аппендить несколько Blob (не нашел как) Как вариант для хранения сконвертированного файла рассматривал сохранение в IndexedDb. Если коротко, то нужно получить большой файл по вебсокету (формат Base64), преобразовать на стороне клиента в файл (Blob) и отдать пользователю. Вот, как-то так.зачем этот гемор? почему нельзя просто так взять и дать пользователю ссылку на скачивание? а браузер правильно крашится. нефиг втихаря забивать мне localStorage всяким многогигабайтным гуано, hdd не резиновый и не казенный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 13:49 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
Antonariyqi_ipТак, полная тема: Есть WebSocket, по нему в JS получаю файл (base64). Как его можно правильно преобразовать в большой файл (blob) на стороне клиента. С небольшими файлами проблем не возникает, но при больших файлах (> 20 МБ) браузер крешится при конверте Base64 в Blob. Возможно можно как-то собрать файл по частям, не нагружая сильно оперативу. Может быть можно аппендить несколько Blob (не нашел как) Как вариант для хранения сконвертированного файла рассматривал сохранение в IndexedDb. Если коротко, то нужно получить большой файл по вебсокету (формат Base64), преобразовать на стороне клиента в файл (Blob) и отдать пользователю. Вот, как-то так.зачем этот гемор? почему нельзя просто так взять и дать пользователю ссылку на скачивание? а браузер правильно крашится. нефиг втихаря забивать мне localStorage всяким многогигабайтным гуано, hdd не резиновый и не казенный. Связь только по Websocket, поэтому не получается просто взять и дать пользователю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 13:51 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
для нормального приёма бинарника нужна вторая строка Код: javascript 1. 2. она не влияет на прём текстовых данных. в моём примере нет необходимости связавыться с blob. проверь, может и для длинных файлов подойдет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 14:00 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
qi_ipСвязь только по Websocket, поэтому не получается просто взять и дать пользователю.Для того, чтобы был вебсокет, сначала должен быть http. Для установления соединения WebSocket клиент и сервер используют протокол, похожий на HTTP. Клиент формирует особый HTTP-запрос, на который сервер отвечает определенным образом. Куда девается HTTP? И вообще, единственный способ создать большой файл браузером — скачать его. Без вариантов (не считая ADODB.Stream). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 14:03 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
ну ещё можно вспомнить про WebDAV https://github.com/sara-nl/js-webdav-client ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 14:08 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
вот описание по работе с файлами http://habrahabr.ru/post/112286/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 14:11 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
вадявот описание по работе с файлами http://habrahabr.ru/post/112286/ а ты его читал? С помощью FileSystem API и File API веб приложение может создавать, читать, просматривать и записывать файлы находящиеся в области пользовательской «песочницы».размер песочницы - 5 мб. даже в память ТС загружает больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 14:18 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
и кроме того только для хрома :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 14:32 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
qi_ipСвязь только по Websocket это чтоб сложнее было? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 14:36 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
Petro123qi_ipСвязь только по Websocket это чтоб сложнее было? )) Тут я ничего не могу поделать - такие условия выполнения. Поэтому тут на форуме темку создал, чтобы узнать, как сделать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 14:38 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
http://updates.html5rocks.com/2011/08/Saving-generated-files-on-the-client-side там же ссылка https://github.com/eligrey/FileSaver.js а это пробовал? Код: javascript 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 14:59 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
Там используются уже готовые бинарные объекты...а я еще до бинарника не дошел, так как застопорился на создании самого бинарника из Base64 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 15:08 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
Petro123qi_ipСвязь только по Websocket это чтоб сложнее было? )) ну через websocket много решается намного проще, чем через ajax особенно мне понравилось такая картинка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 15:08 |
|
||
|
Как передать файл с помощью JavaScript
|
|||
|---|---|---|---|
|
#18+
qi_ipТам используются уже готовые бинарные объекты...а я еще до бинарника не дошел, так как застопорился на создании самого бинарника из Base64 в моём варианте бинарник не используется! если у тебя приходит base64, сделанный из бинарника надо добавить в начало data:application/bin;base64, и все подставить вместо p data:application/bin;base64, - лучше добавить на сервере(если есть такая возможность, у меня так сделано) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 15:14 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=38930481&tid=1446087]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 517ms |

| 0 / 0 |
