powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / (js) Как из URL.createObjectURL() получить ArrayBuffer ?
25 сообщений из 50, страница 1 из 2
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39461866
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На стороне клиента при выборе фото (поле input / file) отображаются уменьшенные превью этих фото.
Считываются файлы методом API.createObjectURL() , который создаёт в оперативной памяти объектный URL и возвращает строку вида:

blob: http://www.site.ru/17b3ab49-dbc2-48e5-afc2-be1d64cec7ef
Эту строку далее присваиваем атрибуту image.src и дело в шляпе.

Задача заключается в том, чтобы из созданного в оперативной памяти объектного URL , имеющего ссылку blob: http://www.site.ru/17b3ab49-dbc2-48e5-afc2-be1d64cec7ef , получить BLOB либо ArrayBuffer .

Как это сделать ?
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39461869
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Повторно считывать файл нельзя - в целях экономии процессорного времени и оперативной памяти
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39461880
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02,

Может это пригодится 19155677
Пример
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
<!DOCTYPE html>
<html>
<head>
<style>
html, body { width:100%; height:100%; }
#img1 { max-width:100px; max-height:100px; border:solid 1px #000000; }
</style>
<script type="text/javascript">
function go() {
var myFliles=document.getElementById('idFile').files, myReader;
    if (!myFliles) { alert('Смените браузер на более новую версию, или на современный.'); return false; }
    myReader = new FileReader();
    myReader.readAsDataURL(myFliles[0]);
    myReader.onloadend = function() {
        var myStringBase64 = myReader.result;
        document.getElementById('img1').src=myStringBase64;
    }
}
</script>
</head>
<body>
  <input type="file" id="idFile" />
  <input type="button" value="Go" onclick="go()" />
  <div><img id="img1" src="" alt=""/></div>
</body>
</html>

...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39461892
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, для получения строки для image.src можно использовать метод fileReader.readAsDataURL() , возвращающий строку данных в формате base64 :
data:image/jpeg;base64,/9j/4TP+RXhpZg...

Но в отличие от API.createObjectURL() / API.revokeObjectURL() , в этом случае нельзя явно освободить память, отведённую под эту длинную строку. Даже если выполнить присваивание image.src = "" или image.src = 'about:blank' . В итоге память после генерации каждого превью не освобождается и в процессе генерации превью для N-го количества фотографий памяти не хватит (браузеры в этом плане оооочень прожорливы). Safari может слететь, в других браузерах получим ошибки.

Т.е. нужно использовать именно API.createObjectURL() / API.revokeObjectURL() . А этот метод возвращает объектный URL вида:
blob: http://www.site.ru/17b3ab49-dbc2-48e5-afc2-be1d64cec7ef

P.S. Сабжевый вопрос остаётся в силе.
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39461900
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... А может FileReader -> Blob -> createObjectURL?

Пример раз: 19888833 и пример два: 19888857 .
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39461910
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторХм... А может FileReader -> Blob -> createObjectURL?В этом случае метод URL.createObjectURL() создаст в оперативной памяти независимую копию переданного ему BLOB-объекта и вернёт blob -ссылку на эту копию. Соответственно, метод URL.revokeObjectURL() удалит из памяти эту копию, а не исходный BLOB-объект, полученный через FileReader. Ну а исходный BLOB-объект по-прежнему будет занимать в памяти место, как и в случае чтения файла методом fileReader.readAsDataURL()

P.S. Во втором вашем примере я не понял, зачем вы методу URL.createObjectURL() передаёте BLOB-объект, созданный из данных, полученных методом fileReader.readAsArrayBuffer(file) . Ведь можно сразу передать URL.createObjectURL(file) ...
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39461912
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02, вот Вы зануда :)

Ну прибейте изначальный BLOB, сразу передавайте file...
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39461914
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Также: If a URL is only expected to be used once (for example, only shown in one Image tag), then the lOptions argument can be set to oneTimeOnly = true to revoke the URL automatically once used.
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39462679
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТакже: If a URL is only expected to be used once (for example, only shown in one Image tag), then the lOptions argument can be set to oneTimeOnly = true to revoke the URL automatically once used. Эта опция работает только в IE10+ ?
https://msdn.microsoft.com/en-us/library/hh772302(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/hh972898(v=vs.85).aspx

Спецификация вроде как вообще не предусматривает никаких опций в URL.createObjectURL() :
https://developer.mozilla.org/ru/docs/Web/API/URL/createObjectURL

В любом случае эта опция выступает в качестве альтернативы явному удалению объекта методом URL.revokeObjectURL()
А если эту опцию понимает только IE10+, то толку от неё ? Всё равно придётся явно вызывать URL.revokeObjectURL()
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39462681
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВ этом случае метод URL.createObjectURL() создаст в оперативной памяти независимую копию переданного ему BLOB-объекта и вернёт blob-ссылку на эту копию. Соответственно, метод URL.revokeObjectURL() удалит из памяти эту копию, а не исходный BLOB-объект, полученный через FileReader. Ну а исходный BLOB-объект по-прежнему будет занимать в памяти место, как и в случае чтения файла методом fileReader.readAsDataURL()авторНу прибейте изначальный BLOBКак прибить ? Методом Blob.close() ?
Если верить https://developer.mozilla.org/ru/docs/Web/API/Blob, это экспериментальный метод. Последний FF такого метода вообще не знает...
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39462696
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02,
а какие проблемы? для проверки я загружал картинок по 2-4м суммарным рамером до 200м выводил их как превьюшки (просто указав размер у тега img).
никаких проблем ни с памятью, ни с быстродеймтвием. потом отправлял их на сервер....
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39462699
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02,
есть нтмл, на которой зашружаются картинки, кадрируются, изменяется размер, поворот обрезаются под <просмотровый> размер и под превьюшки. делается как для одной фотки, так и для мультизагрузки фоток
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39462736
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автора какие проблемы? для проверки я загружал картинок по 2-4м суммарным рамером до 200м выводил их как превьюшки (просто указав размер у тега img).
никаких проблем ни с памятью, ни с быстродеймтвием. потом отправлял их на сервер.... "src" для картинок вы как генерируете ? Через URL.createObjectURL() или через FileReader ?

Если используете URL.createObjectURL()/URL.revokeObjectURL() , то проблем с памятью быть и не должно. Что <image> => <canvas>, что <img width height>, хотя во втором случае памяти всё равно потребуется больше и потребность этой памяти целиком будет зависеть от браузерной оптимизации.

Если используете FileReader, то отсутствие проблем с памятью можно объяснить так:
1) Вы выбираете в input картинки не сразу 50-100 штук за раз, а в 2-3 подхода (при использовании FileReader память, отведённая под длиннющую base64-строку, накапливается только в процессе генерации превью для выбранного набора файлов, как только генерация завершится, через 1-10 сек память освободится, иногда может и не освобождаться, пока страницу не закроешь)
2) У вас было 2Гб свободной оперативки

P.S. В любом случае, если вы разрабатываете функционал не для себя, а для людей, нужно использовать canvas , а не отресайзенный <img> . Иначе у людей будут браузеры падать либо превьюшки не будут генерироваться. И то, и другое я уже наблюдал на собственном опыте. Браузеры и падали, и глючили...

Вот статья про "прожорливые" браузеры:
https://habrahabr.ru/post/208402/
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39462835
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02,
вот такой код
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
            <%-- работа с картинками --%>
            var fb = {};
            fb.max = 0;
            Object.defineProperty(fb, "max", {
                enumerable: false
            });
            <%-- загрузка через кнопку --%>
            document.getElementById('file').addEventListener('change', function (evt) {
                load_files(evt.target.files);
            }, false);
            <%-- загрузка перетаскиванием --%>
            var target = document.getElementById("files");
            target.addEventListener("dragover", function (event) {
                event.preventDefault(); // отменяем действие по умолчанию
                $(target).css('pointer-events', 'avto');
            }, false);
            target.addEventListener("drop", function (event) {
                // отменяем действие по умолчанию
                event.preventDefault();
                load_files(event.dataTransfer.files);
            }, true);
            function load_files(files) {
                document.getElementById('close').setAttribute('disabled', '');
                document.styleSheets['style1'].cssRules[0].style.visibility = 'visible';
                var n = files.length;
                var a = 0;
                var urlFactory = window.URL || window.webkitURL;
                var listFiles = document.getElementById('list_files');
                for (var i = 0; i < n; i++) {
                    var sp = document.createElement('span');
                    sp.innerHTML = '█';
                    sp.dataset.num = 'pic' + (fb.max + i);
                    listFiles.appendChild(sp);
                }
                read_file(files[a]);
                function read_file(file) {
                    var reader = new FileReader();
                    reader.onloadend = function () {
                        console.log(fb.max, '       ', files[a].name);
                        fb['pic' + fb.max] = new Blob([reader.result], {type: "image/jpeg"});
                        $('#pic_div').append('<div class="pic_num" data-pic="' + fb.max + '">\n\
                    <div class="pic_title new_pic">\n\
                    <button class="bt_del"><img class="pic_del" src="pic/del_.png" alt="" /></button><span></span>\n\
                    </div>\n\
                    <img src="' + urlFactory.createObjectURL(fb['pic' + fb.max]) + '" alt=""/>\n\
                    </div>');
                        listFiles.querySelectorAll('span[data-num="pic' + fb.max + '"]')[0].style.color = 'red';
                        fb.max++;
                        if ((a++) < (n - 1)) {
                            read_file(files[a]);
                        } else {
                            var k = 1;
                            var x = document.getElementById('pic_div').querySelectorAll('div.pic_num:not(.delPic) span');
                            [].forEach.call(x, function (el) {
                                el.innerHTML = k++;
                            });
//                            saveOnOff(true);
                            document.getElementById('save').removeAttribute('disabled');
                        }
                    };
                    reader.readAsArrayBuffer(file);
                }
            }



памяти 4г
загружено дофига , т.е. свап используется по полной.
хром.
выбираю разово 614 картинок по 2+ мег.
время ограничивает только файловые оперции - чтение , и скидывание в свап.
в остальном всё быстро.
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39462838
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_022) У вас было 2Гб свободной оперативки
свободной оперативки 0.
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39462861
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02Вот статья про "прожорливые" браузеры:
статья интересная, но там только про использование памяти - а насчёт быстродействия ни слова.
мало того, не рассмотрено ухудшение качества при таком подходе
для передачи на сервер как правило нжны не превью, а цельные размеры.
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39463178
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторвот такой кодЧто-то у ваш каша какая-то. Вы читаете файл через FileReader.readAsArrayBuffer(file) , затем из полученного ArrayBuffer создаёте Blob -объект и передаёте его в URL.createObjectURL() . В итоге у вас в памяти картинка хранится в 3 экземплярах - и ArrayBuffer , и Blob-объект, и объект, созданный методом URL.createObjectURL(). И ничего явно не удаляется...

Достаточно сразу читать img.src = URL.createObjectURL(file) либо FileReader.readAsDataURL(file) и img.src = e.target.result

автормало того, не рассмотрено ухудшение качества при таком подходеУхудшение качества чего ? И при каком подходе ?

автордля передачи на сервер как правило нжны не превью, а цельные размеры. Так ведь при передаче на сервер используются объекты File и чтение передаваемых данных производится непосредственно с диска. А то, что городим скриптами для отображения превью - при передаче данных на сервер вообще никак не используется и никак не затрагивается

А в статье рассматривают как раз процесс создания превью (перед отправкой данных на сервер)
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39463219
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02Что-то у ваш каша какая-то. Вы читаете файл через FileReader.readAsArrayBuffer(file) , затем из полученного ArrayBuffer создаёте Blob -объект и передаёте его в URL.createObjectURL() . В итоге у вас в памяти картинка хранится в 3 экземплярах - и ArrayBuffer , и Blob-объект, и объект, созданный методом URL.createObjectURL(). И ничего явно не удаляется...
мне в итоге нужен бинарный файл, который и передаётся на сервер
хранится 2 экземпляра : blob и то что ковертнулось в URL.createObjectURL()
ArrayBuffer вроде как пертирается при считывании
когда картинка в канвасе ументшается в размере её качество ухудшается, для сохранения качества картинки при уменьшении с использованием катваса надо уменишать размер по шагам , кждый шаг не более чем в 2 раза.
Cyrax_02Так ведь при передаче на сервер используются объекты File и чтение передаваемых данных производится непосредственно с диска. А то, что городим скриптами для отображения превью - при передаче данных на сервер вообще никак не используется и никак не затрагивается
дак ты ж требовал без повторного считывания, у меня получается счиывается всё в память,а потом из памяти передается. т.е. считывается 1 раз.
в практическом примеиении у меня загружается максимум 5 картинок.
дляэтого откравается отдельное окно, считали , убедились, что нужное считали - отправили на сервер.
600 картинок это для проверки ...
но даже при таком количестве все работает .
если не надо бинарных данных, то можно изменить. убрать лишние преобразования
будет меньше жрать память. но даже в таком варианте я не жалуюсь на проблемы с памятью.
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39463222
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02А в статье рассматривают как раз процесс создания превью (перед отправкой данных на сервер)
у меня есть отдельная страничка, которая подготавливает из исходников и превьюшки 70*60px, и полноразмерные 700*600px
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39463315
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автормне в итоге нужен бинарный файл, который и передаётся на серверТ.е. передаёте вы на сервер не объект File (данные считываются с диска), а тот самый объект Blob , который получаете из ArrayBuffer ? Зачем именно так ? Скорость чтения с диска всё равно выше скорости передачи по сети. На передаче ничего не выиграете, но зато потеряете в разы больше на показе превью.

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

Вот если только на стороне клиента нужно отресайзить и обрезать фото, тогда нужно выбирать - либо канвас (с ручным ресайзом нормальным алгоритмом), либо img с указанием высоты и ширины. Но последний вариант при большом числе картинок на практике неприменим (из-за большого объёма потребляемой памяти).

автордак ты ж требовал без повторного считывания, у меня получается счиывается всё в память,а потом из памяти передается. т.е. считывается 1 раз.Задача заключается без повторного считывания файла и превью показать, и объект Blob или ArrayBuffer получить. Но не используя FileReader (который не освобождает память в процессе генерации превью - только через 1-10 сек после завершения генерации или не освобождает вообще, пока не закрыть окно).

В вашем примере используется FileReader. И в процессе генерации превью память только накапливается, накапливается, накапливается.
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39463327
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02Т.е. передаёте вы на сервер не объект File (данные считываются с диска), а тот самый объект Blob , который получаете из ArrayBuffer ? Зачем именно так ? Скорость чтения с диска всё равно выше скорости передачи по сети. На передаче ничего не выиграете, но зато потеряете в разы больше на показе превью.я передаю бинарные - потомe как это короче чем base64. хоть скорость чтения и большая - всё равно заметная. я считал в память и там всё быстро. время на преобразование в отображение очень маленькое, больше времени тратится на чтение с диска.
передаётся на сервер по ws, надо сказать вся отправка происходит "мнгновенно", т.е. фоном . и надо сказать что весь затык - в файловую систему ввода/вывода.
Cyrax_02В вашем примере используется FileReader. И в процессе генерации превью память только накапливается, накапливается, накапливается.вполне возможно, но только я не вижу в этом проблемы.
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39463353
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02,
вот по быстродействию
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
                    function read_file(file) {

                        var reader = new FileReader();
                        reader.onloadend = function () {
console.timeEnd('чтение');
console.time('преобразование');
                            fb['pic' + fb.max] = new Blob([reader.result], {type: "image/jpeg"});
console.timeEnd('преобразование');
console.time('преобразование1');
                            $('#pic_div').append('<div class="pic_num" data-pic="' + fb.max + '">\n\
                    <div class="pic_title new_pic">\n\
                    <button class="bt_del"><img class="pic_del" src="pic/del_.png" alt="" /></button><span></span>\n\
                    </div>\n\
                    <img src="' + urlFactory.createObjectURL(fb['pic' + fb.max]) + '" alt=""/>\n\
                    </div>');
console.timeEnd('преобразование1');
                            listFiles.querySelectorAll('span[data-num="pic' + fb.max + '"]')[0].style.color = 'red';
                            fb.max++;
                            if ((a++) < (n - 1))
                            {
                                read_file(files[a]);
                            }
                            else
                            {
                                var k = 1;
                                var x = document.getElementById('pic_div').querySelectorAll('div.pic_num:not(.delPic) span');
                                [].forEach.call(x, function (el) {
                                    el.innerHTML = k++;
                                });
//                            saveOnOff(true);
                                document.getElementById('save').removeAttribute('disabled');
                            }
                        };
console.log('%s      %s ', fb.max, files[a].name);
console.time('чтение');
                        reader.readAsArrayBuffer(file);
                    }


вот временные показатели (чтение 10 файлов по 5 мег

0 SDC11937.JPG
чтение: 138ms
преобразование: 11.000244140625ms
преобразование1: 14ms
1 SDC11954.JPG
чтение: 289ms
преобразование: 20ms
преобразование1: 8ms
2 SDC11960.JPG
чтение: 241ms
преобразование: 16ms
преобразование1: 5ms
3 SDC11964.JPG
чтение: 211ms
преобразование: 10ms
преобразование1: 12ms
4 SDC11961.JPG
чтение: 199.999755859375ms
преобразование: 23ms
преобразование1: 3ms
5 SDC11943.JPG
чтение: 155ms
преобразование: 11ms
преобразование1: 6.999755859375ms
6 SDC11942.JPG
чтение: 248.999755859375ms
преобразование: 23ms
преобразование1: 8.000244140625ms
7 SDC11946.JPG
чтение: 405ms
преобразование: 20ms
преобразование1: 9ms
8 SDC11951.JPG
чтение: 193ms
преобразование: 9.999755859375ms
преобразование1: 8.000244140625ms
9 SDC11932 - копия.JPG
чтение: 203ms
преобразование: 10ms
преобразование1: 8ms
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39463381
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторя передаю бинарные - потомe как это короче чем base64
Ну файлы всегда передаются в бинарном виде (multipart/form-data).
Зачем передавать объект Blob вместо File ?

авторвполне возможно, но только я не вижу в этом проблемы.
Если требуется сгенерировать N количество превью за раз, потребуются гигабайты памяти. Сайт (одна страница в браузере) не должна потреблять гигабайты памяти. У пользователей, которые будут загружать файлы через ваш сайт будут проблемы. Слёты и ошибки. Я же давал ссылку на статью - там указаны объёмы потребляемой памяти. Вы же для пользователей делаете функционал ? Не для себя...
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39463516
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02Ну файлы всегда передаются в бинарном виде (multipart/form-data).
Зачем передавать объект Blob вместо File ?я пердаю по websocket. там есть два режима передачи - бинарный и текстовый. бинарный быстрее, т.к. меньше на треть тестового.

Cyrax_02Если требуется сгенерировать N количество превью за раз, потребуются гигабайты памяти.
N - это сколько? при 10 картинках по 5м - страница потребовала 200м.
при 600 - да, много памяти , но ни сбоев ни вылетов не было. а кто в здравом уме будет столько за раз грузить?
для загрузки фоток у меня открывается страница в новом окне. загрузили - отправили -окно закрылось .
да это не для ширпотреба, это вариант для корпоративного использования, где можно разрешить открывать в новом окне/вкладке.
но кто мешает сделать подобный элемент dom, который при окончании работы просто удалится из DOM и освободит ресурсы?
странно , но в инете куча вопросов и ответов именно на обратное преобразование.
а ты не пробовал сделать такое предбразование через canvas?
...
Рейтинг: 0 / 0
(js) Как из URL.createObjectURL() получить ArrayBuffer ?
    #39463519
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
25 сообщений из 50, страница 1 из 2
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / (js) Как из URL.createObjectURL() получить ArrayBuffer ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]