Como fazer upload / POST de vários elementos de tela

Preciso criar um carregador de imagens para um projeto futuro (sem flash, IE10 +, FF7 + etc.) que redimensione / converta / recorte imagens no lado do cliente e não no servido

ntão criei uma interface javascript em que o usuário pode 'enviar' seus arquivos e redimensionar / cortar diretamente no navegador, sem nunca entrar em contato com o servidor. O desempenho está bom, não é tão bom, mas funciona.

O resultado final é uma matriz de elementos da tela. O usuário pode editar / cortar as imagens depois que elas são redimensionadas, então eu as mantenho como tela em vez de convertê-las em jpeg. (O que pioraria o desempenho inicial)

Agora, isso funciona bem, mas não sei qual é a melhor maneira de realmente fazer upload dos elementos de tela finalizados no servidor agora. (Usando um manipulador genérico do asp.net 4 no servidor)

Tentei criar um objeto json a partir de todos os elementos que contêm o dataurl de cada tel

O problema é que, quando eu tenho 10 a 40 fotos, o navegador começa a congelar ao criar os dados, especialmente para imagens maiores que 2 megabyte

            //images = array of UploadImage
            for (var i = 0; i < images.length; i++) {
                var data = document.getElementById('cv_' + i).toDataURL('image/jpg');
                images[i].data = data.substr(data.indexOf('base64') + 7);
            }

Também convertê-los em um objeto json (estou usando json2.js) geralmente trava meu navegador. (FF7)

My object

    var UploadImage = function (pFileName, pName, pDescription) {
        this.FileName = pFileName;
        this.Name = pName;
        this.Description = pDescription;
        this.data = null;
    }

A rotina de upload

            //images = array of UploadImage
            for (var i = 0; i < images.length; i++) {
                var data = document.getElementById('cv_' + i).toDataURL('image/jpg');
                images[i].data = data.substr(data.indexOf('base64') + 7);
            }

            var xhr, provider;
            xhr = jQuery.ajaxSettings.xhr();
            if (xhr.upload) {
                xhr.upload.addEventListener('progress', function (e) {
                    console.log(Math.round((e.loaded * 100) / e.total) + '% done');
                }, false);
            }
            provider = function () {
                return xhr;
            };
            var ddd = JSON.stringify(images); //usually crash here
            $.ajax({
                type: 'POST',
                url: 'upload.ashx',
                xhr: provider,
                dataType: 'json',
                success: function (data) {
                    alert('ajax success: data = ' + data);
                },
                error: function () {
                    alert('ajax error');
                },
                data: ddd
            });

ual seria a melhor maneira de enviar os elementos da tela para o servido

Devo enviar todos de uma vez ou um por um?

questionAnswers(1)

yourAnswerToTheQuestion