Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.03.2015, 01:58
Аватар для blacklool
Аспирант
Отправить личное сообщение для blacklool Посмотреть профиль Найти все сообщения от blacklool
 
Регистрация: 16.01.2014
Сообщений: 50

Не могу получить файлы [NodeJS&AJAX]
Здравствуйте, не могу понять почему файлы не приходят, есть код скрипта (полный, т.к. без формы):

function dropZone(){
    //drop zone
    var dropZone = $('#dropZone'),
        maxFileSize = 1000000000000000000000; // max size -

    if (typeof(window.FileReader) == 'undefined') {
        dropZone.text('Use recent browser to upload files');
        dropZone.addClass('error');
    }


    //events
    dropZone[0].ondragover = function() {
        dropZone.addClass('hover');
        return false;
    };

    dropZone[0].ondragleave = function() {
        dropZone.removeClass('hover');
        return false;
    };


    //class hack
    dropZone[0].ondrop = function(event) {
        event.preventDefault();
        dropZone.removeClass('hover');
        dropZone.addClass('drop');

        //size
        var file = event.dataTransfer.files[0];

        if (file.size > maxFileSize) {
           dropZone.text('Big file!');
           dropZone.addClass('error');
           return false;
        }

      //ajax


      $.ajax({
         type: 'post',
         url: 'upload',
         data: file,
         success: function () {
            alert('success!');
         },
         xhrFields: {
        // add listener to XMLHTTPRequest object directly for progress
            onprogress: uploadProgress
         },
         processData: false,
         contentType: file.type
        });

        //progress

        function uploadProgress(event) {
            var percent = parseInt(event.loaded / event.total * 100);
            dropZone.text('Donloading: ' + percent + '%');
        }

        //check result

        function stateChange(event) {
            if (event.target.readyState == 4) {
                if (event.target.status == 200) {
                    dropZone.text('Downloaded successfuly!');
                } else {
                    dropZone.text('Error!');
                    dropZone.addClass('error');
                }
            }
        }
    };
}


Я использую middleware 'connect-multiparty', и с формой multipart уже работало, но так, при drag&drop не хочет, я в этих делах еще много практики не имею, поэтому, кто нибуть может обьсяснить почему при :

console.log(req.files);


Я получаю пустой массив? ( {} )

Нужно что-то поменять в скрипте? или middleware? или нужно вставлять невидимую форму для отправки?

Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 09.03.2015, 22:47
Аватар для blacklool
Аспирант
Отправить личное сообщение для blacklool Посмотреть профиль Найти все сообщения от blacklool
 
Регистрация: 16.01.2014
Сообщений: 50

ответ: нужно использовать formData

var data = new FormData();
$.each(files, function(key, value){
    data.append(key, value);
});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конструктор, не могу получить доступ к свойству класса voodoo_dn Общие вопросы Javascript 5 17.12.2014 18:07
Не могу получить ширину объекта(картинки) Cruzer Общие вопросы Javascript 8 28.10.2011 20:18
Не могу получить значение атрибута DenQ jQuery 9 06.02.2011 14:33
Не могу получить id элементов в таблице. LowCoder Общие вопросы Javascript 2 05.07.2009 14:53
Не могу получить высоту из css asci Общие вопросы Javascript 5 30.03.2009 13:31